excel poi 的xml配置_java - Apache POI Excel - 如何配置要扩展的列?
java - Apache POI Excel - 如何配置要扩展的列?
我使用groupRow()生成setColumnGroupCollapsed()来输出一些数据。
我面临的问题是,在创建和打开电子表格时,不会扩展列,以便乍一看不会出现像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");
创建此电子表格时,“Looooooong text not to first up first”字符串位于单元格中,但由于该列未展开,因此仅显示“Loooooooo”。
如何配置它,以便在我打开电子表格时,列已经扩展了???
9个解决方案
142 votes
将所有数据添加到工作表后,可以在工作表上调用autoSizeColumn(int column)以将列自动调整为适当的大小
这是API的链接。
有关更多参考,请参阅此帖子使用apache poi时,将excel单元格大小与内容大小相匹配的问题
Sean answered 2019-03-26T22:16:22Z
38 votes
提示:要使自动调整大小,请在将数据填充到Excel后进行调用sheet.autoSizeColumn(columnNumber)。
在填充数据之前调用方法将不起作用。
Unni Kris answered 2019-03-26T22:16:53Z
21 votes
如果要自动调整工作簿中的所有列的大小,这里有一个可能有用的方法:
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(0);
Iterator cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
int columnIndex = cell.getColumnIndex();
sheet.autoSizeColumn(columnIndex);
}
}
}
}
Ondrej Kvasnovsky answered 2019-03-26T22:17:17Z
8 votes
对于Excel POI:
sheetName.autoSizeColumn(cellnum);
Adnan Ghaffar answered 2019-03-26T22:17:42Z
7 votes
你可以尝试这样的事情:
HSSFSheet summarySheet = wb.createSheet();
summarySheet.setColumnWidth(short column, short width);
这里的参数是:工作表中的列号及其宽度但是,宽度单位非常小,例如可以尝试4000。
UVM answered 2019-03-26T22:18:09Z
4 votes
示例代码如下
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");
//这很重要
sheet.autoSizeColumn(0);
//参数必须是单元格编号
cell = row.createCell(1);
cell.setCellValue("a big name without auto size feature enabled");
检查输出并坚果:)
Mateen answered 2019-03-26T22:18:53Z
1 votes
如果您知道列的计数(例如,它等于集合列表)。 你可以简单地使用这个衬垫来调整一张纸的所有列(如果你至少使用java 8):
IntStream.range(0, columnCount).forEach((columnIndex) -> sheet.autoSizeColumn(columnIndex));
snap answered 2019-03-26T22:19:18Z
0 votes
它非常简单,使用这一行代码dataSheet.autoSizeColumn(0)
或者给出括号中的列数dataSheet.autoSizeColumn(单元格编号)
Muhammad Faisal Shahzad answered 2019-03-26T22:19:56Z
-1 votes
如果要更多地扩展单元格,可以使用setColumnWidth()。
Francis Gabriel Rodriguez answered 2019-03-26T22:20:29Z
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)