Java Excel I/0 问题

标签 java excel io apache-poi


为了处理我的项目,我需要从 apache 了解 POI Api。 因此,我决定创建一个小程序,用于创建电子表格并用一些值填充其单元格。

问题是它没有做它应该做的事情,我很确定逻辑是正确的,我怀疑这与数据写入文件的方式有关,但我无法修复它我在处理 I/O 方面的经验非常糟糕。

这是我的代码:

package excel;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;


public class Excel {


    public static void main(String[] args) {


        Workbook workbook = new HSSFWorkbook();
         Sheet sheetTest = workbook.createSheet("TestPOI");

         Cell[] cell = new Cell[100];
         int k = 0, i=0, j=0;

         for( i=0; i<10; i++){
             for (j = 0; j < 10; j++) {
                 System.out.println(k);
                 cell[k] = sheetTest.createRow(i).createCell(j);
                 cell[k].setCellValue(k);
                 k++;
             }
         }


    try{
    FileOutputStream output = new FileOutputStream("MyWorkbook.xls");
    workbook.write(output);
    output.close();
    } //end try
    catch(Exception e){
    e.printStackTrace();
    } //end catch

    } // end of the main method
}

提前致谢

最佳答案

我发现两个问题

1)您没有分隔行和列。这意味着您始终使用相同的行/列

cell[k] = sheetTest.createRow(i).createCell(i);

2) 您每次都在创建行。每个外循环只应执行一次此操作。

你想要什么:

for( i=0; i<10; i++){
     HSSFRow row = sheetTest.createRow(i);
     for (j = 0; j < 10; j++) {
         System.out.println(k);
         cell[k] =  row.createCell(j);
         cell[k].setCellValue(k);
         k++;
     }
 }

请注意,我已更改 createCell() 调用以使用“j”作为内部索引。而且我只创建该行一次。

关于Java Excel I/0 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508398/

相关文章:

java - 如何使用 httpcore 库从 get 请求中获取整个实体

java - 如何在SWT中在Canvas周围绘制边框

java - 正向循环或反向循环取决于生成什么随机数?

c++ - 用 C++ 将不同的结构写入文件?

c - UNIX 套接字的缓冲写入?

java - 我有时会出错,有时不会?

c# - 为什么 "An unhandled exception of type ' System.IO.IOException' occurred in mscorlib.dll (locked by some .exe)”发生?

excel - 如何在 Excel 或 R 中绘制此类图形?

excel - 将多个值写入一个单元格 - VBA

java - RandomAccessFile - 返回空字符串