最佳列宽 OpenOffice Calc

Posted

技术标签:

【中文标题】最佳列宽 OpenOffice Calc【英文标题】:Optimal Column Width OpenOffice Calc 【发布时间】:2012-12-20 08:52:48 【问题描述】:

我正在将 CSV 文件中的数据输入到 OpenOffice 电子表格中。

此代码获取电子表格中的新工作表:

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

但我不确定如何使用它。任何人都可以进一步解释这一点或想出另一种方法来让细胞自动适应吗?

【问题讨论】:

【参考方案1】:

我认为代码中的 cmets 是西班牙语,但代码是英语。我通过谷歌翻译运行 cmets,所以现在它们是英文的。我是从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。

【讨论】:

谢谢你,我设法让这个代码的一个稍微不同的版本工作,但这真的很有帮助。我会把我的版本放在下面,以防它可以帮助别人。再次感谢。【参考方案2】:
   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));
            
        

【讨论】:

以上是关于最佳列宽 OpenOffice Calc的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenOffice.org 演示文稿中嵌入源代码的最佳方法是啥?

XtraReport交叉表自适应行高及最佳列宽

XtraReport交叉表自适应行高及最佳列宽(转)

开源 Java 文本解析器

Flutter 布局 3 列宽 3 行深,图标和文本在下方 - 图标 OnPressed(不是导航栏,而是全屏)

如何在linux平台实现对excel文件的操作