gpt4 book ai didi

java - 使用 Apache poi 和 servlets 创建多个工作表

转载 作者:搜寻专家 更新时间:2023-11-01 02:46:55 25 4
gpt4 key购买 nike

当我使用 Apache poi 和 servlet 创建多个工作表时。它正在创建工作表但不将数据写入文件。我正在尝试通过以下代码将前 1000 条记录写入 sheet1,然后将下 1000 条记录写入 sheet2,但无法正常工作

private void writeDataToExcelFile(String string,
ArrayList<ArrayList<String>> excelData, OutputStream outputStream) {
HSSFWorkbook myWorkBook = new HSSFWorkbook();
String sheetName = "";
sheetName = "Document-" + 0;
HSSFSheet mySheet = myWorkBook.createSheet();
HSSFRow myRow = null;
HSSFCell myCell = null;
for (int rowNum = 0; rowNum < excelData.size(); rowNum++) {
ArrayList<String> rowData = excelData.get(rowNum);
if(rowNum>0 && rowNum%1000 == 0)
{
sheetName = "Document-" + (rowNum/1000);
mySheet = myWorkBook.createSheet();
}
myRow = mySheet.createRow(rowNum);
for (int cellNum = 0; cellNum < rowData.size(); cellNum++) {
myCell = myRow.createCell(cellNum);
myCell.setCellValue(rowData.get(cellNum));
}
}
System.out.println("Last row:" + mySheet.getLastRowNum());
System.out.println("Row number:" + mySheet.rowIterator().next().getRowNum());
try {
myWorkBook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

我的逻辑有什么问题。请提供必要的帮助。谢谢

最佳答案

当您循环遍历数据集时,您希望在第 1000 行拆分以开始一个新工作表,这很好,但是当您开始新工作表时,您创建的下一行是第 1001 行(外部循环索引变量)

myRow = mySheet.createRow(rowNum);

为了得到你想要的效果,把循环改成这样:

int currentRow = 0;
for (int rowNum = 0; rowNum < excelData.size(); rowNum++)
{
ArrayList<String> rowData = excelData.get(rowNum);

if(currentRow == 1000)
{
sheetName = "Document-" + (rowNum/1000);
mySheet = myWorkBook.createSheet();
currentRow = 0;
}
myRow = mySheet.createRow(currentRow);
for (int cellNum = 0; cellNum < rowData.size(); cellNum++)
{
myCell = myRow.createCell(cellNum);
myCell.setCellValue(rowData.get(cellNum));
}

currentRow++;
}

我还没有编译这个,所以我不知道它是否会立即起作用,但它应该为您指明了正确的方向。

HTH

编辑
进一步考虑这一点,您可以通过对原始应用程序进行 1 行更改来获得相同的效果(尽管会失去一点清晰度):

myRow = mySheet.createRow(rowNum%1000);

关于java - 使用 Apache poi 和 servlets 创建多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com