通过java将数据写入Excel工作表

时间:2013-07-18 12:22:49

标签: java excel-2007

我正在尝试将数据写入excel表。但是当我使用workbook.write(fileout)时,它失败了。我通过互联网但是每个人都说问题出在构建路径中。我使用过ooxml_schemas- 1.1.jar每个人都建议但没有用。任何人都可以帮我解决这个问题?提前致谢

2 个答案:

答案 0 :(得分:2)

您可以使用Apache POI

Apache POI是一个功能强大的Java库,可以处理不同的Microsoft Office文件格式,例如Excel,Power Point,Visio,MS Word等。名称POI最初是“穷人混淆实施”的首字母缩略词,幽默地指的是文件格式似乎是故意混淆的,但很差,因为它们成功地进行了逆向工程。

答案 1 :(得分:2)

创建新的Excel文件

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//..
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
//Create a new row in current sheet
Row row = sheet.createRow(0);
//Create a new cell in current row
Cell cell = row.createCell(0);
//Set value to new value
cell.setCellValue("Blahblah");

然后在excel文件中写入数据

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

Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"Emp No.", "Name", "Salary"});
data.put("2", new Object[] {1d, "John", 1500000d});
data.put("3", new Object[] {2d, "Sam", 800000d});
data.put("4", new Object[] {3d, "Dean", 700000d});

Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
    Row row = sheet.createRow(rownum++);
    Object [] objArr = data.get(key);
    int cellnum = 0;
    for (Object obj : objArr) {
        Cell cell = row.createCell(cellnum++);
        if(obj instanceof Date) 
            cell.setCellValue((Date)obj);
        else if(obj instanceof Boolean)
            cell.setCellValue((Boolean)obj);
        else if(obj instanceof String)
            cell.setCellValue((String)obj);
        else if(obj instanceof Double)
            cell.setCellValue((Double)obj);
    }
}

try {
    FileOutputStream out = 
            new FileOutputStream(new File("C:\\new.xls"));
    workbook.write(out);
    out.close();
    System.out.println("Excel written successfully..");

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}