我已经编写了用于编写xlsm(Excel 2007)的Java文件。
使用Apache POI库,成功编写xlsx文件。并且编写xlsm文件是成功的。但是由于打开xlsm文件时出错,我无法打开xlsm文件。
使用Apache POI库编写xlsm文件是否可行?
如果编写xlsm可行,请提供指南如何使用Apache poi库编写xlsm文件。
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet("Related_SRC");
String realName = "Test.xlsm";
File file = new File("C:\\sdpApp", realName);
try {
FileOutputStream fileOutput = new FileOutputStream(file);
workBook.write(fileOutput);
fileOutput.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
谢谢
根据Apache
POI的文档,无法创建宏:http :
//poi.apache.org/spreadsheet/limitations.html
但是,可以读取和重写包含宏的文件,而apache poi将安全地保留宏。
这是一个例子:
String fileName = "C:\\new_file.xlsm";
try {
Workbook workbook;
workbook = new XSSFWorkbook(
OPCPackage.open("resources/template_with_macro.xlsm")
);
//DO STUF WITH WORKBOOK
FileOutputStream out = new FileOutputStream(new File(fileName));
workbook.write(out);
out.close();
System.out.println("xlsm created successfully..");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
创建的文件不会给您错误。
我已经编写了用于编写xlsm(Excel2007)的java文件。 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错。 使用ApachePOI库编写xlsm文件可行吗? 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南。 谢谢
wef:使用apache poi写入xlsm(Excel 2007) 当我向文件中写入一个简单的字符串时,我无法打开该文件。错误-“Excel无法打开文件“Test1.xlsm”,因为文件格式或文件扩展名无效”
我使用这段代码使用ApachePOI重写xlsm文件。我必须从resultset重写Sheet1上的数据,这段代码创建模板xlsm文件的副本,并执行所有处理。 但当我打开创建的xlsm文件时,会显示以下消息: 我们发现“文件名”中的某些内容有问题。xlsm’。你想让我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”。 这是我的代码,请建议我该怎么做。
我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。
问题内容: 用以下格式将a写入Excel工作簿很简单: 这使: 和相应的Excel文件。 有没有还写了一个可能性成Excel文件?实际上,这与或多或少相同,但可以在文件中存储VBA宏。我需要这样做是因为我想在创建文件后插入并运行VBA宏。 但是,当在常规文件上尝试此操作时,我在弹出窗口中收到以下错误消息: 然后,我可以手动选择将文件保存为包含宏的文件。但是,我希望自动执行此操作而无需执行额外的步骤
用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。