当前位置: 首页 > 知识库问答 >
问题:

使用Apache POIJava只读xlsm文件读取数据

冯旭
2023-03-14

我试图使用java apache poi从只读xlsm读取数据,但当我使用XSSF工作簿时,它似乎无法访问该文件,而HSSF工作簿仅适用于xls文件。我的代码如下所示:

try {
                FileInputStream file = new FileInputStream(new File("file.xlsm"));
                System.out.println("found file");
                XSSFWorkbook workbook = new XSSFWorkbook(file);
                System.out.println("in workbook");
                XSSFSheet sheet = workbook.getSheet("Shipments");
                System.out.println("got sheet");

代码从未到达“工作簿中”打印行,我不知道为什么。请帮忙!

共有2个答案

雍光远
2023-03-14

我复制了您的代码并给出了文件的绝对路径,我能够得到预期的结果。

FileInputStream file = new FileInputStream(new File("C:\\Users\\user\\Desktop\\filet.xlsm"));
System.out.println("found file");
XSSFWorkbook workbook = new XSSFWorkbook(file);
System.out.println("in workbook");
XSSFSheet sheet = workbook.getSheet("Shipments");
System.out.println("got sheet");

你的引用似乎有问题。因此,当您尝试创建文件资源时,请检查您引用文件的方式。

葛驰
2023-03-14

版本4.0.0有一个工作簿工厂类,带有一个布尔“readonly”参数。所以,要以只读模式打开。。。

XSSFWorkbook nextWorkbook = XSSFWorkbookFactory.createWorkbook(myFile, true);
 类似资料:
  • 我无法使用POI框架(HSSF)读取xlsm文件。我在读取xlsm文件时遇到以下错误。 提供的数据似乎在Office2007+XML中。您正在调用POI中处理OLE2 Office文档的部分。您需要调用POI的不同部分来处理该数据(例如XSSF而不是HSSF) 我还尝试通过XSSF读取该文件。即使那样也解决不了问题。谁能告诉我如何使用poi框架读取java代码中的xlsm文件,并为该文件编写一个新

  • 问题内容: 如何使用Pandas读取以下(两列)数据(来自.dat文件) 列分隔符(至少)为2个空格。 我试过了 但它打印 问题答案: 您可以将参数usecols与列顺序一起使用: 编辑: 您可以使用分隔符-2个或更多空格,然后添加,因为出现警告: ParserWarning:回退到“ python”引擎,因为“ c”引擎不支持正则表达式分隔符(分隔符> 1个字符且与“ \ s +”不同的分隔符被

  • 4.6.1.2 使用公共只读文件 这是使用文件向未指定的大量应用公开内容的情况。 如果通过遵循以下几点来实现,那么它也是比较安全的文件使用方法。 请注意,在 API 级别 1 7及更高版本中,不推荐使用MODE_WORLD_READABLE变量来创建公共文件,并且在 API 级别 24 及更高版本中,会触发安全异常; 因此使用内容供应器的文件共享方法更可取。 要点: 文件必须在应用目录中创建。 文

  • 我使用OpenCSV进行CSV文件的读写。在I hsd安装早期版本的Java(即Java 6)之前,它工作得很好。安装完之后,我的代码就停止工作了: 线程“main”java.lang.UnsupportedClassVersionError:COM/OpenCSV/CSVReader:不支持Major.Minor版本51.0在java.lang.ClassLoader.DefineClass1(

  • 我如何完成这个任务?

  • 我正在尝试读取Mac上pig shell上的csv文件。我所做的只是文件到变量中,然后变量。我是这样做的: 我使用的数据是从这里提供的github下载的 此文件在我的Mac上的本地安装的hdfs中可用。当我执行时,我得到一个错误: org.apache.pig.impl.logicallayer.FrontendException:错误1066:无法打开别名影片的迭代器 在org.apache.p