翻譯:OpenOffice.org API介紹(三)

          Posted on 2007-07-18 11:37 Tommy Jian 閱讀(3236) 評論(2)  編輯  收藏 所屬分類: OpenOffice.org

            3.3  數(shù)據(jù)的設置

             我們需要使用的有三種類型的數(shù)據(jù)。在開始之前,我們需要有個方法來獲得對單元格的訪問。這一節(jié)的其他輔助性方法也將使用此方法,定義如下:

          public XCell getXCellByPosition(XSpreadsheet xSpreadsheet, int x, int y)
              throws Exception 
          {
              return xSpreadsheet.getCellByPosition(x, y);
          }

           

             

             首先,我們將要接觸到文本類型的數(shù)據(jù),比如說Javalobby文章的標題。對于這種數(shù)據(jù),輔助性方法需要電子表對象、列位置、行位置以及數(shù)據(jù)本身作為參數(shù)。

          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);
          }

           

             其次,對于數(shù)字類型的數(shù)據(jù),比如說“Reply”列的數(shù)據(jù),輔助性方法要求傳遞double類型的參數(shù):

          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);
          }

           

             最后,盡管Calc的公式是普通的字符串,我們可以使用OpenOffice.org的API所包含的單元格樣式屬性來為單元格設置預定義的“Result”樣式,這主要是針對我們匯總回復總數(shù)的計算公式來進行設置:

          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");
          }

           

            3.4  顏色的使用

             下面的代碼將在隨后被使用:

          if (position%2 == 0
          {
              oooHelper.setColorRow(xSpreadsheet, position, 
          0xFF9933);
          }

           

             在ARGB顏色空間中,0xFF9933代表橙色。如果行數(shù)是偶數(shù),那么電子表、行數(shù)以及橙色會被作為參數(shù)傳遞給方法:

          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));
          }

           

             如果用戶需要看到“Most Replies”或者“Least Replies”,我們將使用以下代碼進行設置:

          ooHelper.setColorCell(xSpreadsheet, 2, jTable1.getRowCount()+50x008000);

           

             以下的方法需要電子表、列數(shù)、行數(shù)以及顏色值作為參數(shù):

          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));
          }

           


          本文譯自NetBeans.org中的文章,其中的代碼也都經過譯者測試。未完待續(xù)!!!

          Feedback

          # 如何獲取單元格的合并數(shù)據(jù)信息呀  回復  更多評論   

          2007-12-20 16:54 by lhslove@126.com
          如何獲取單元格的合并數(shù)據(jù)信息呀
          比如我想得到某個單元格合并了幾個單元格,用什么方法得到?謝謝

          # re: 翻譯:OpenOffice.org API介紹(四)  回復  更多評論   

          2008-07-09 15:47 by xiaowu
          aaa
          主站蜘蛛池模板: 西丰县| 饶阳县| 津市市| 修武县| 芜湖县| 荃湾区| 嵊州市| 金塔县| 楚雄市| 大田县| 正宁县| 宾川县| 乐山市| 天祝| 大连市| 宁波市| 二连浩特市| 乐都县| 谢通门县| 贵定县| 广水市| 闽清县| 宽甸| 台南县| 江安县| 大洼县| 兴业县| 驻马店市| 政和县| 拉萨市| 四子王旗| 即墨市| 西安市| 娱乐| 宣城市| 武冈市| 岗巴县| 墨江| 陵水| 隆德县| 思茅市|