3

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

HSSFWorkbook wb = new HFFSWorkbook();

但是有了新的 POI,我就不必这样做了。

我不能这样做:

Workbook wb = new Workbook();

我明白WorkbookFactory.create,但那是为了打开一个文件。

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

4

4 回答 4

7

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

对于xls->Workbook wb = new HSSFWorkbook();

对于xlsx->Workbook wb = new XSSFWorkbook();

于 2015-08-07T17:22:10.157 回答
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

于 2012-09-10T22:20:00.613 回答
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();
}
于 2014-04-06T01:32:02.210 回答
2

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

 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将让您加载文件类型的适当实例。创建新文件时,您必须选择自己,因为那里还没有任何东西!)

于 2012-09-11T07:41:13.977 回答