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

为什么不从excel (*)加载信息。xlsx)(使用Apache POI)?

夏知
2023-03-14

尝试从Excel文件(*)加载JSP上的信息。xlsx)使用Apache POI 3.15。

在excel中查看信息

num溶液

1第一个

2秒钟

三分之三

尝试使用代码

try {
        InputStream ExcelFileToRead = new FileInputStream("C:\\server\\to_db.xlsx");
        XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead);

        XSSFWorkbook test = new XSSFWorkbook();

        XSSFSheet sheet = wb.getSheetAt(0);
        XSSFRow row;
        XSSFCell cell;

        Iterator rows = sheet.rowIterator();

        while (rows.hasNext()) {
            row = (XSSFRow) rows.next();
            Iterator cells = row.cellIterator();
            while (cells.hasNext()) {
                cell = (XSSFCell) cells.next();

                if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
                    out.print(cell.getStringCellValue() + " ");
                } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
                    out.print(cell.getNumericCellValue() + " ");
                } else {
                    //U Can Handel Boolean, Formula, Errors
                }
            }
            out.println("Succefully!!!");
        }
    }
     catch (Exception e) {
    out.println( "exception: "+e);
    }

得到一个奇怪的结果:

JSP上缺少错误和信息……

所有浏览器都会重现问题。如果我尝试打开C:\server\to_db。xlsx OS Windows响应“文件正忙”。问题可能是什么?如何解决?

共有3个答案

林鹭洋
2023-03-14

在lib目录中没有一些公共库

共享资源集合4-4.1.jar, 共享资源编解码器-1.10.jar, 共享资源文件上传-1.3.jar

他们的存在解决了问题。

许嘉福
2023-03-14

我认为您必须使用“。关闭()”关闭文件。这可能会对您有所帮助。

易弘亮
2023-03-14

当您打开FileInputStreamFileOutputStream时,您需要关闭它,否则您的文件可能会根据Windows操作系统上使用的操作系统被进程锁定。更一般地说,您需要关闭所有用于防止任何泄漏或此类问题的Closeable对象。

因此,您应该重写您的代码,接下来使用try-with-Resource语句,该语句将自动为您关闭资源。

try (InputStream ExcelFileToRead = new FileInputStream("C:\\server\\to_db.xlsx");
     XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead)) {
   ...

实际上,在您的代码中有2个Closeable对象,它们是ExcelFileToRead

 类似资料:
  • 问题内容: 问题 我尝试使用以下 在此页面上:http : //grb.sonoma.edu : 81/paging.php从数据库加载数据。方法1仅在IE8中有效,但仅在刷新页面后才有效。首次加载页面时,我收到“完成此操作所需的数据尚不可用”。错误。 我更喜欢方法1的原因是因为它使我可以访问表中的各个行。例如,每一行都有一个“突发”类。我在用 单击时更改所选行的颜色。这似乎仅适用于方法1,而不适

  • 我想使用Spark Session2.2从HDFS中的Excel文件加载数据。下面是我的Java代码和我得到的异常。 我有个例外: java.lang.nosuchmethoderror:org.apache.poi.ss.usermodel.workbook.close()V at com.crealytics.spark.excel.excelrelation.com$crealytics$s

  • 问题内容: 鉴于它明确地是UTC,为什么没有任何时区信息? 我希望这将包含。 问题答案: 这意味着它是时区幼稚的,所以您不能将其与 你可以给它一个时区 现在您可以更改时区 要获取给定时区的当前时间,可以将tzinfo直接传递给: 它适用于任何时区,包括那些遵守夏时制(DST)的时区,即,它适用于在不同时间具有不同utc偏移量(非固定utc偏移量)的时区。请勿使用-如果当地时间不明确,则在DST结束

  • 问题内容: 在使用jQuery学习Ajax请求的过程中,我尝试通过单击链接来加载google主页。所以我写了类似的东西: 在身体某处: 哪个没有用,最初我以为是语法错误或某些错误。但是后来,当我在服务器上用静态html文件替换google url时,它可以正常工作。 它是设计成这样工作的(如果是,为什么?),或者我做错了什么? 编辑:请问有人可以解释(或引用)跨域ajax调用引入的安全性问题吗?换

  • 各位, 我们有一个与excel更新的可伸缩性有关的需求。 例如,我们有一个Excel工作簿,有10个工作表,每个工作表都有大量的数据。 现在我们要做的是用“新值”替换其中一个单元格。 但是在Apache POI中,我们理解了我们必须加载整个“工作簿”,即使我们必须修改excel表单中的数据。这消耗了巨大的内存,是不可接受的。 是否有任何单元格级读写(立即刷新)工具或API用于Excel。

  • 我创建了一个简单的GUI,其中包括一个JTable。这张桌子可能被保存了 此时,保存函数按预期工作,当在保存目录中查找时,我可以看到表对象存储在文件中。 但是,当我尝试从文件加载表时,GUI从不显示加载的表。调用actionlistener函数,因为我有一个系统。输出“数据已加载”,但表格从不显示更新的数据。 我已尝试调用repaint(),但无效。如果有人能让我知道我可能做错了什么,我将不胜感激