Tag: apache poi

在Excel电子表格中查找最后一行

我试图使用Apache的POI for Java来查找Excel电子表格中最后一行的索引。 我认为这应该是可能的getLastRowNum()或getPhysicalNumberOfRows()但他们似乎并没有给出正确的结果。 例如,我有一行电子表格,这两个函数返回值为1140.另外两行电子表格的值为1162。 另一个问题是,我不能只查找第一个空行,因为有可能在有效的数据行之间有空行。 那么有没有办法find最后一行的索引? 我想我可以要求不要在数据之间有空行,但我希望有一个更好的解决scheme。 编辑:使用迭代器logging没有帮助。 它只是遍历1140/1162假定的行。

Apache POI插入图像

我正在插入一个图片在excel表im正在制作的麻烦。 关于这个问题有很多问题,但我根本搞不清楚我做错了什么。 我的代码运行,显示没有错误,但我没有看到一个图像插入:( 这里是代码: InputStream is = new FileInputStream("nasuto_tlo.png"); byte [] bytes = IOUtils.toByteArray(is); int pictureIndex = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG); is.close(); CreationHelper helper = wb.getCreationHelper(); Drawing drawingPatriarch = sheet.createDrawingPatriarch(); ClientAnchor anchor = helper.createClientAnchor(); anchor.setCol1(2); anchor.setRow1(3); Picture pict = drawingPatriarch.createPicture(anchor, pictureIndex); pict.resize(); try { FileOutputStream out = new FileOutputStream(root+"/Busotina/Busotina1.xls"); wb.write(out); out.close(); } catch (Exception e) { e.printStackTrace(); […]

使用Apache POI导入CSV数据

如何使用Apache POI有效导入CSV数据? 如果我有一个非常大的CSV文件,我想在我的Excel电子表格中存储,那么我不认为逐个单元格是导入的最佳方法…?

适用于大型电子表格的Apache POI Java Excel性能

我有一个电子表格,我试图阅读与POI(我有xls和xlsx格式),但在这种情况下,问题是与xls文件。 我的电子表格大约有10,000行和75列,读取它可能需要几分钟时间(尽pipeExcel会在几秒钟内打开)。 我正在使用基于事件的阅读,而不是将整个文件读入内存。 我的代码的肉在下面。 现在有点乱,但是这实际上只是一个很长的switch语句,大部分都是从POI的例子中复制而来的。 使用事件模型的POI性能如此之慢是典型的吗? 我有什么办法来加速这个吗? 我觉得我的申请几分钟是不能接受的。 POIFSFileSystem poifs = new POIFSFileSystem(fis); InputStream din = poifs.createDocumentInputStream("Workbook"); try { HSSFRequest req = new HSSFRequest(); listener = new FormatTrackingHSSFListener(new HSSFListener() { @Override public void processRecord(Record rec) { thisString = null; int sid = rec.getSid(); switch (sid) { case SSTRecord.sid: strTable = (SSTRecord) rec; break; case LabelSSTRecord.sid: […]

用xls和xlsx excel文件在java中读写

我正在写一个程序,需要读写excel文件,而不考虑格式(xls或xlsx)。 我知道Apache的POI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里所要做的。 (也欢迎使用除POI以外的API的想法)。

使用POI以数字格式设置Excel单元格值

我想在Excel表格中存储数字数据。 数字数据在我的java代码中由stringtypes表示。 有没有可能将其设置为数字,而不是铸造它? 我试过下面的代码,但它没有转换为数字types(我在Excel中得到一个警告,说这个数字被存储为文本…) HSSFCell dCell =… dCell.setCellType(Cell.CELL_TYPE_NUMERIC); dCell.setCellValue("112.45")

有没有办法使用Apache POI来读取.xls和.xlsx文件?

我需要创build一个可以读取xls和xlsx文件的方法。 根据我的研究,HSSF用于读取xls和XSSF来读取xlsx。 有没有我可以用来读取这两个文件的Apache POI的一部分? 我也遇到了ss.usermodel,但没有发现足够的代码,将同时招待xls和xlsx ….

尝试读取XLSX文件时发生NullpointerException

我目前有这个代码使用Apache POI打开一个xlsx文件 File existingXlsx = new File("/app/app.xlsx"); System.out.println("File Exists: " + existingXlsx.exists()); Workbook workbook = WorkbookFactory.create(existingXlsx); 当我尝试执行此操作时,我得到以下输出 File Exists: true java.lang.NullPointerException at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:270) at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:186) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:91) 我想要打开的文件可以在Excel中打开,并正确显示数据,我能做些什么来让POI读取XLSX文件? 这是打破的文件; https://mega.co.nz/#!FJMWjQKI!CzihQgMVpxOQDTXzSnb3UFYSKbx4yFTb03-LI3iLmkE 编辑 我也试过了,这个结果也是一样的错误; Workbook workbook = new XSSFWorkbook(new FileInputStream(existingXlsx)); 编辑 我发现它正在抛出exception的行; WorkbookDocument doc = WorkbookDocument.Factory.parse(getPackagePart().getInputStream()); this.workbook = doc.getWorkbook(); Map<String, XSSFSheet> shIdMap = new HashMap<String, […]

在Java中匹配Excel的浮点数

我在工作表1的左上方单元格中有一个单一数字的.xlsx电子表格。 Excel用户界面显示: -130.98999999999 这是在公式栏中可见的,即不受包含单元格设置显示的小数位数的影响。 这是Excel将为这个单元格显示的最准确的数字。 在底层的XML中,我们有: <v>-130.98999999999069</v> 当试图用Apache POI读取工作簿时,它通过Double.valueOf从XML中提供数字,并提供: -130.9899999999907 不幸的是,这与用户在Excel中可以看到的数字不同。 任何人都可以指向我的algorithm,以获得用户在Excel中看到相同的数字? 迄今为止,我的研究表明,Excel 2007文件格式使用IEE754浮点的稍微非标准版本,其中值空间不同。 我相信Excel的浮点数,这个数字是四舍五入的边界的另一边,因此出来,而不是向上舍入。

从.xls文件中获取“工作簿的绝对path”

当我在一个特定的.xls文件上使用Excel“Document Inspector”来检查“隐藏的属性或个人信息”时,它说: 以下文件信息被发现: *工作簿的绝对path 如何从文件中获取工作簿的绝对path? 如果需要以编程方式完成,我可以使用Java(如Apache POI)或VBA。 我知道文件当前保存的位置,但是我想提取的是保存在文件中的工作簿的绝对path。 这是我可以知道作者保存的地方。 这是文件发生了什么事情: 有人创作它,把它保存在我不知道的绝对文件path中 他们上传到一个网站 我从网站上下载了它 Excel表示文档包含步骤1的绝对path。我在这条path之后,而不是我在步骤3保存它的地方,因为我知道这一点。