mas*_*san 88 java excel expand apache-poi
我Apache POI API
用来生成excel spreadsheet
输出一些数据.
我面临的问题是,在创建和打开电子表格时,不会扩展列,以便乍一看不会出现像Date格式化文本这样的长文本.
我可以双击excel中的列边框来展开或拖动边框来调整列宽,但可能有20多列,每次打开电子表格时我都无法手动执行此操作:(
我发现了(虽然可能是错误的方法)groupRow()
并且setColumnGroupCollapsed()
可能能够做到这一点,但没有运气.也许我错误地使用它.
示例代码段
Workbook wb = new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
//create sheet
Sheet sheet = wb.createSheet("masatoSheet");
//not really working yet.... :(
//set group for expand/collapse
//sheet.groupRow(0, 10); //just random fromRow toRow argument values...
//sheet.setColumnGroupCollapsed(0, true);
//create row
Row row = sheet.createRow((short)0);
//put a cell in the row and store long text data
row.createCell(0).setCellValue("Loooooooong text not to show up first");
Run Code Online (Sandbox Code Playgroud)
创建此电子表格时,"Looooooong text not to first up first"字符串位于单元格中,但由于该列未展开,因此仅显示"Loooooooo".
如何配置它,以便在我打开电子表格时,列已经扩展了???
Sea*_*ean 159
之后您添加到表中的所有数据,您可以拨打autoSizeColumn(int column)
你的表的列自动调整到合适的大小
这是API的链接.
有关更多参考信息,请参阅此文章 使用apache poi时将excel单元格大小与内容大小相匹配的问题
Ond*_*sky 33
如果要自动调整工作簿中的所有列的大小,这里有一个可能有用的方法:
public void autoSizeColumns(Workbook workbook) {
int numberOfSheets = workbook.getNumberOfSheets();
for (int i = 0; i < numberOfSheets; i++) {
Sheet sheet = workbook.getSheetAt(i);
if (sheet.getPhysicalNumberOfRows() > 0) {
Row row = sheet.getRow(sheet.getFirstRowNum());
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
int columnIndex = cell.getColumnIndex();
sheet.autoSizeColumn(columnIndex);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情:
HSSFSheet summarySheet = wb.createSheet();
summarySheet.setColumnWidth(short column, short width);
Run Code Online (Sandbox Code Playgroud)
这里的参数是:工作表中的列号和宽度但是,宽度的单位非常小,例如可以尝试4000.
如果您知道列的数量(如果它等于集合列表)。您可以简单地使用这个衬垫来调整一张纸的所有列(如果您至少使用 java 8):
IntStream.range(0, columnCount).forEach(sheet::autoSizeColumn)
Run Code Online (Sandbox Code Playgroud)
下面的示例代码
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("your sheet name");
HSSFRow row = sheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("A BIG NAME WITH AUTO SIZE FEATURE ENABLED");
Run Code Online (Sandbox Code Playgroud)
//这很关键
sheet.autoSizeColumn(0);
Run Code Online (Sandbox Code Playgroud)
//参数必须是单元格编号
cell = row.createCell(1);
cell.setCellValue("a big name without auto size feature enabled");
Run Code Online (Sandbox Code Playgroud)
检查输出并拧紧:)
归档时间: |
|
查看次数: |
180696 次 |
最近记录: |