Java POI使用SS模型创建新工作簿?

时间:2012-09-10 20:58:07

标签: java apache-poi

我有点困惑,我曾经这样做过:

HSSFWorkbook wb = new HFFSWorkbook();

但是对于新的POI,我不必这样做。

我不能这样做:

Workbook wb = new Workbook();

我理解WorkbookFactory.create,但这是打开文件。

如何使用此ss模型设置新工作簿?

4 个答案:

答案 0 :(得分:6)

您仍然可以使用SS模型,但需要在创建时决定文件格式。

xls - > Workbook wb = new HSSFWorkbook();

xlsx - > Workbook wb = new XSSFWorkbook();

答案 1 :(得分:4)

在“新POI”中,您可以编写/读取XLS文件和XLSX文件。无论如何,对于XLS文件格式,您使用的是:

HSSFWorkbook wb = new HSSFWorkbook(); 

因此,对于XLSX文件格式,您必须使用:

XSSFWorkbook wb = new XSSFWorkbook();
// you could also do below
// Workbook wb = new XSSFWorkbook(); 

如果您在下面的链接中提到从XLS迁移到XLSX迁移,那么对您有帮助。


1. http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html
2. http://poi.apache.org/spreadsheet/converting.html

答案 2 :(得分:3)

确保在运行代码之前下载POI JAR文件并将其添加到项目的类路径中。可以在此处找到Apache POI JAR文件。

public void main(String[] args) throws IOException {

// Directory path where the xls file will be created
String destinationFilePath = "C:/Users/devesh_/Documents/HelloWorld.xls";

// Create object of FileOutputStream
FileOutputStream fout = new FileOutputStream(destinationFilePath);

// Build the Excel File
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
HSSFWorkbook workBook = new HSSFWorkbook();

// Create the spreadsheet
HSSFSheet spreadSheet = workBook.createSheet("Hello_World");

// Create the first row
HSSFRow row = spreadSheet.createRow((short) 0);

// Create the cells and write to the file
HSSFCell cell;

// Write Hello
cell = row.createCell(0);
cell.setCellValue(new HSSFRichTextString("Hello"));

// Write World
cell = row.createCell(1);
cell.setCellValue(new HSSFRichTextString("World"));

workBook.write(outputStream);

outputStream.writeTo(fout);
outputStream.close();
fout.close();
}

答案 3 :(得分:1)

创建文件时,您需要预先确定它的格式 - 您不能只等到写出时间才能这样做。您的代码类似于:

 Workbook wb = null;
 if (shouldBeXLS) {
    wb = new HSSFWorkbook();
 } else {
    wb = new XSSFWorkbook();
 }

 // work on the file in a generic way

 // save, with a suitable name
 String filename = "test.xls";
 if (!shouldBeXLS) { filename = filename + "x"; }
 FileOutputStream fout = new FileOutputStream(filename);
 wb.write(fout);
 fout.close();

一开始,确定您希望为此特定实例提供哪种格式,然后创建该格式。将其视为一般工作簿,并以通用方式写入。最后,记住它是什么,这样你就可以为文件提供正确的扩展名!

(当读入文件时,WorkbookFactory将允许您加载文件类型的相应实例。创建新文件时,您必须选择自己,因为那里还没有任何内容!)