2012-12-20 90 views
3

我將數據從CSV文件輸入到OpenOffice電子表格中。最佳列寬OpenOffice Calc

這段代碼獲得在電子表格中的一個新的工作表:

Public Spreadsheet getSpreadsheet(int sheetIndex, XComponent xComp) 
{ 
    XSpreadsheet xSheets = ((XSpreadsheetDocument)xComp).getSheets(); 
    XIndexAccess xSheetIA = (XIndexAccess)xSheets; 
    XSpreadsheet XSheet = (XSpreadsheet)xSheetsA.getByIndex(sheetIndex).Value; 
    return XSheet; 
} 

我然後有進入列表成在時間的小區範圍中的一個細胞的方法。我希望能夠自動設置這些單元格的列大小。這有點像

string final DataCell; 
Xspreadsheet newSheet = getSpreadsheet(sheetIndex, xComp); 
int numberOfRecords = (int numberOfColumns * int numberOfRows); 
for(cellNumber = 0; cellNumber < numberOfrecords; cellNumber++) 
{ 
    XCell tableData = newSheet.getCellbyPosition(columnValue, rowValue); 
    ((XText)tableData).setString(finalDataCell); 
    column Value++; 
    if(columnValue > = numberOfColumns) 
    { 
    rowVal++ column = 0; 
    } 
} 

谷歌上搜索我已經找到了功能後:

columns.OptimalWidth = Truehttp://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=31292

但即時如何使用這個不確定。任何人都可以進一步解釋這一點,或想想另一種方法來讓細胞自動適應?

回答

5

我知道代碼中的評論是用西班牙文,我認爲,但代碼是英文的。我通過Google翻譯發表了評論,現在他們都是英文的。我複製它從here

//Auto Enlarge col width 
private void largeurAuto(string NomCol) 
{ 
XCellRange Range = null; 
Range = Sheet.getCellRangeByName(NomCol + "1"); //Recover the range, a cell is 

XColumnRowRange RCol = (XColumnRowRange)Range; //Creates a collar ranks 
XTableColumns LCol = RCol.getColumns(); // Retrieves the list of passes 
uno.Any Col = LCol.getByIndex(0); //Extract the first Col 

XPropertySet xPropSet = (XPropertySet)Col.Value; 
xPropSet.setPropertyValue("OptimalWidth", new one.Any((bool)true)); 
} 

這做什麼它這樣的:首先它獲得的區域名稱,然後得到的第一列。但是,真正的代碼是使用XpropertySet,這真的很好解釋here

+0

謝謝,我設法讓這個代碼稍有不同的版本工作,但這真的很有幫助。我會把我的版本包裝下來,它可以幫助別人。再次感謝。 –

0
public void optimalWidth(XSpreadsheet newSheet) 
     { 
     // gets the used range of the sheet 
      XSheetCellCursor XCursor = newSheet.createCursor(); 
      XUsedAreaCursor xUsedCursor = (XUsedAreaCursor)XCursor; 
      xUsedCursor.gotoStartOfUsedArea(true); 
      xUsedCursor.gotoEndOfUsedArea(true); 

      XCellRangeAddressable nomCol = (XCellRangeAddressable)xUsedCursor; 


      XColumnRowRange RCol = (XColumnRowRange)nomCol; 
      XTableColumns LCol = RCol.getColumns(); 
     // loops round all of the columns 
      for (int i = 0; i < nomCol.getRangeAddress().EndColumn;i++) 
      { 
      XPropertySet xPropSet = (XPropertySet)LCol.getByIndex(i).Value; 
      xPropSet.setPropertyValue("OptimalWidth", new uno.Any(true)); 
      } 
     } 
相關問題