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

Java POI是否使用SS模型创建新工作簿?,java,apache-poi,Java,Apache Poi,我有点困惑,我曾经这样做: HSSFWorkbook wb = new HFFSWorkbook(); 但是有了新的POI,我不必这么做 我不能这样做: Workbook wb = new Workbook(); 我理解WorkbookFactory.create,但那是用来打开文件的 如何使用此ss模型设置新工作簿?在“新POI”中,您可以写入/读取XLS文件和XLSX文件。在任何情况下,对于您使用的XLS文件格式: HSSFWorkbook wb = new HSSFWorkbook()

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

HSSFWorkbook wb = new HFFSWorkbook();
但是有了新的POI,我不必这么做

我不能这样做:

Workbook wb = new Workbook();
我理解WorkbookFactory.create,但那是用来打开文件的

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

在“新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.

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

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

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();
}

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

对于
xls
->
工作簿wb=new HSSFWorkbook()


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

Q:你们都有问题吗?它与此有何区别:?如何创建新工作簿?不,它不是重复的..他向我演示了如何使用参数打开工作簿..我需要创建一个没有参数的工作簿Dude,您可以通过指定文件或输入流来创建工作簿:)该文件不必存在-保存更新时可以创建它。也许你是说“工作表”?或者对指定文件是否有其他异议?PS:从“Doc Holliday”中删除第二个“l”有什么特别的原因吗?1)如果您有使用旧的无参数构造函数的遗留代码。。。那么我猜你的选择是a)更新代码,或者b)不要使用新的API。2) 是一个历史人物。拼写为两个“l”,而不是一个;)