翻譯:OpenOffice.org API介紹(三)
Posted on 2007-07-18 11:37 Tommy Jian 閱讀(3226) 評論(2) 編輯 收藏 所屬分類: OpenOffice.org3.3 數據的設置
我們需要使用的有三種類型的數據。在開始之前,我們需要有個方法來獲得對單元格的訪問。這一節的其他輔助性方法也將使用此方法,定義如下:
public XCell getXCellByPosition(XSpreadsheet xSpreadsheet, int x, int y)
throws Exception
{
return xSpreadsheet.getCellByPosition(x, y);
}
throws Exception
{
return xSpreadsheet.getCellByPosition(x, y);
}
首先,我們將要接觸到文本類型的數據,比如說Javalobby文章的標題。對于這種數據,輔助性方法需要電子表對象、列位置、行位置以及數據本身作為參數。
public void setTextValueOfXCellAtPosition(XSpreadsheet
xSpreadsheet, int x, int y, String value) throws Exception
{
//We first identify the cell we need to work with,
//using the incoming x and y values:
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//Next, since we're working with text, we define
//a text object and a cursor object and insert the received content into the cell:
XText xText = (com.sun.star.text.XText)UnoRuntime.queryInterface(com.sun.
star.text.XText.class, xCell);
XTextCursor xTextCursor = xText.createTextCursor();
xText.insertString(xTextCursor, value, false);
}
xSpreadsheet, int x, int y, String value) throws Exception
{
//We first identify the cell we need to work with,
//using the incoming x and y values:
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//Next, since we're working with text, we define
//a text object and a cursor object and insert the received content into the cell:
XText xText = (com.sun.star.text.XText)UnoRuntime.queryInterface(com.sun.
star.text.XText.class, xCell);
XTextCursor xTextCursor = xText.createTextCursor();
xText.insertString(xTextCursor, value, false);
}
其次,對于數字類型的數據,比如說“Reply”列的數據,輔助性方法要求傳遞double類型的參數:
public void setNumValueOfXCellAtPosition(XSpreadsheet
xSpreadsheet, int x, int y, double value) throws Exception
{
//First we get the cell identified by the received x and y values:
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//Then we add the received value to the identified cell:
xCell.setValue(value);
}
xSpreadsheet, int x, int y, double value) throws Exception
{
//First we get the cell identified by the received x and y values:
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//Then we add the received value to the identified cell:
xCell.setValue(value);
}
最后,盡管Calc的公式是普通的字符串,我們可以使用OpenOffice.org的API所包含的單元格樣式屬性來為單元格設置預定義的“Result”樣式,這主要是針對我們匯總回復總數的計算公式來進行設置:
public void setFormulaOfXCellAtPosition(XSpreadsheet
xSpreadsheet, int x, int y, String formula) throws Exception
{
//We get the cell defined by the incoming x and y values"
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//We add a Calc formula to the cell, as received by the helper method:
xCell.setFormula(formula);
//We attach a property set to our cell, so that we can define a property:
XPropertySet xCellProps = (XPropertySet)UnoRuntime.
queryInterface(XPropertySet.class, xCell);
//We set the style of the cell, using a predefined "Result" style,
//which comes out of the box with the OpenOffic.org API:
xCellProps.setPropertyValue("CellStyle", "Result");
}
xSpreadsheet, int x, int y, String formula) throws Exception
{
//We get the cell defined by the incoming x and y values"
XCell xCell = getXCellByPosition(xSpreadsheet, x, y);
//We add a Calc formula to the cell, as received by the helper method:
xCell.setFormula(formula);
//We attach a property set to our cell, so that we can define a property:
XPropertySet xCellProps = (XPropertySet)UnoRuntime.
queryInterface(XPropertySet.class, xCell);
//We set the style of the cell, using a predefined "Result" style,
//which comes out of the box with the OpenOffic.org API:
xCellProps.setPropertyValue("CellStyle", "Result");
}
3.4 顏色的使用
下面的代碼將在隨后被使用:
if (position%2 == 0)
{
oooHelper.setColorRow(xSpreadsheet, position, 0xFF9933);
}
{
oooHelper.setColorRow(xSpreadsheet, position, 0xFF9933);
}
在ARGB顏色空間中,0xFF9933代表橙色。如果行數是偶數,那么電子表、行數以及橙色會被作為參數傳遞給方法:
public void setColorRow(XSpreadsheet
xSpreadsheet, int row, int color) throws Exception
{
//First we get the range of cells we want to deal with,
//which is the whole spreadsheet:
XCellRange xCellRange = (XCellRange)UnoRuntime.queryInterface
( XCellRange.class, xSpreadsheet );
//Next, we narrow down our selection further,
//going from column 0/current row to column 3/current row,
//which is a whole row from left to right:
XCellRange xSelectedCells = xCellRange.getCellRangeByPosition(0, row, 3, row);
//Next, we create a property set and assign it to our selected range:
XPropertySet xCellProps =
(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xSelectedCells);
//This line sets the color to white, which basically
//refreshes the row color before we add our new row color:
xCellProps.setPropertyValue("CellBackColor", new Integer(16777215));
//This line sets the color to whatever is received,
//in this case orange:
xCellProps.setPropertyValue("CellBackColor", new Integer(color));
}
xSpreadsheet, int row, int color) throws Exception
{
//First we get the range of cells we want to deal with,
//which is the whole spreadsheet:
XCellRange xCellRange = (XCellRange)UnoRuntime.queryInterface
( XCellRange.class, xSpreadsheet );
//Next, we narrow down our selection further,
//going from column 0/current row to column 3/current row,
//which is a whole row from left to right:
XCellRange xSelectedCells = xCellRange.getCellRangeByPosition(0, row, 3, row);
//Next, we create a property set and assign it to our selected range:
XPropertySet xCellProps =
(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xSelectedCells);
//This line sets the color to white, which basically
//refreshes the row color before we add our new row color:
xCellProps.setPropertyValue("CellBackColor", new Integer(16777215));
//This line sets the color to whatever is received,
//in this case orange:
xCellProps.setPropertyValue("CellBackColor", new Integer(color));
}
如果用戶需要看到“Most Replies”或者“Least Replies”,我們將使用以下代碼進行設置:
ooHelper.setColorCell(xSpreadsheet, 2, jTable1.getRowCount()+5, 0x008000);
以下的方法需要電子表、列數、行數以及顏色值作為參數:
public void setColorCell(XSpreadsheet xSpreadsheet, int column, int row, int color)
throws Exception
{
//First, we select the entire received spreadsheet:
XCellRange xCellRange = (XCellRange)UnoRuntime.queryInterface( XCellRange.class,
xSpreadsheet );
//From the received spreadsheet, we select a single cell,
//defined by the row and column received:
XCellRange xSelectedCells = xCellRange.getCellRangeByPosition(column,
row, column, row);
//We define a property set, an object to contain the cell's properties:
XPropertySet xCellProps = (XPropertySet)UnoRuntime.queryInterface
(XPropertySet.class, xSelectedCells);
//This line sets the color to white, to refresh the cell:
xCellProps.setPropertyValue("CellBackColor", new Integer(16777215));
//This line sets the background color of the cell to whatever is received:
xCellProps.setPropertyValue("CellBackColor", new Integer(color));
}
throws Exception
{
//First, we select the entire received spreadsheet:
XCellRange xCellRange = (XCellRange)UnoRuntime.queryInterface( XCellRange.class,
xSpreadsheet );
//From the received spreadsheet, we select a single cell,
//defined by the row and column received:
XCellRange xSelectedCells = xCellRange.getCellRangeByPosition(column,
row, column, row);
//We define a property set, an object to contain the cell's properties:
XPropertySet xCellProps = (XPropertySet)UnoRuntime.queryInterface
(XPropertySet.class, xSelectedCells);
//This line sets the color to white, to refresh the cell:
xCellProps.setPropertyValue("CellBackColor", new Integer(16777215));
//This line sets the background color of the cell to whatever is received:
xCellProps.setPropertyValue("CellBackColor", new Integer(color));
}
本文譯自NetBeans.org中的文章,其中的代碼也都經過譯者測試。未完待續!!!