在excel文件中安排java输出

时间:2014-03-19 15:24:20

标签: java excel

我有一个java程序,每次运行它都会输出1000个整数值。我想在每次运行程序时将输出复制到excel文件。我想在excel文件的第一列中输出第一次运行,然后在同一个excel文件的后续列中复制下一次运行。 例如:

Run: 1
value1
value2
.
.
value1000
Run:2
value1
value2
.
.
value1000

我希望excel文件的第一列中的第一个输出和第二列中的第二个输出

这是我的代码:

int rownum=1;
int cellnum=1;
File file; 
HSSFWorkbook workbook;
HSSFSheet sheet;
HSSFRow row;
HSSFCell cell;

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");

public void writeOutput(double meandispersion) {    

    String dispersion = Double.toString(meandispersion);

    HSSFRow row = sheet.createRow(rownum++);
    HSSFCell cell = row.createCell(cellnum);    
    cell.setCellValue("dispersion");

    try {
        FileOutputStream out = new FileOutputStream("newFile.xls");
        workbook.write(out);
        out.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }   

}

主代码中总共有1000个时间步,并且在每个时间步中调用此方法并将meandispersion的值传递给它。它在第一列中打印1000行的1000个值。问题是,当我第二次运行程序时,我想复制第二列中的1000个值,第三个运行第三列,依此类推。目前它没有追加值,它会覆盖整个文件。有谁可以指出这个问题?

5 个答案:

答案 0 :(得分:1)

您可能希望将结果写入CSV文件。这种文件很容易用Java处理,Excel会正确打开它。

如果你想要一些辅助类来读/写/合并这些文件,你可以看看my CsvUtils repository

答案 1 :(得分:0)

如果Excel已打开,您可以通过动态数据交换(DDE)协议对其进行操作。

我为此目的使用了以下库:java DDE library

答案 2 :(得分:0)

您应该使用API​​写入excel文件,如下所示:

Apache POI

jexcelapi Tutorial

答案 3 :(得分:0)

最简单的解决方案:

  • 使用CSV文件
    • 文本文件
    • 第一行建立标题
    • 每个后续行都是以逗号分隔的列
  • 每个周期追加一个新行

    surname,firstname
    doe,john
    

答案 4 :(得分:0)

我已经创建了一个可能你需要的实用程序(由Apache POI支持)。使用该实用程序很简单,只需创建自己的Excel模板设计即可。它可能包含一些占位符,您可以从Java程序中更改这些占位符。模板设计准备就绪后,只需创建类CreateExcel()的实例,然后创建execute()

以下是源代码的链接:Java - CreateExcel

包含样本以帮助您入门。

干杯!