我有点困惑,我曾经这样做过:
HSSFWorkbook wb = new HFFSWorkbook();
但是有了新的 POI,我就不必这样做了。
我不能这样做:
Workbook wb = new Workbook();
我明白WorkbookFactory.create
,但那是为了打开一个文件。
如何使用此 ss 模型设置新工作簿?
我有点困惑,我曾经这样做过:
HSSFWorkbook wb = new HFFSWorkbook();
但是有了新的 POI,我就不必这样做了。
我不能这样做:
Workbook wb = new Workbook();
我明白WorkbookFactory.create
,但那是为了打开一个文件。
如何使用此 ss 模型设置新工作簿?
您仍然可以使用 SS 模型,但需要在创建时确定文件格式。
对于xls
->Workbook wb = new HSSFWorkbook();
对于xlsx
->Workbook wb = new XSSFWorkbook();
在“新 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
确保在运行代码之前下载 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();
}
创建文件时,您需要预先确定它的格式 - 您不能等到写出时间再这样做。您的代码将类似于:
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
将让您加载文件类型的适当实例。创建新文件时,您必须选择自己,因为那里还没有任何东西!)