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”,而不是一个;)