Tag: apache poi

在XSSFWorksheet代码中未检测到空白

我正在使用下面的代码将XLSX转换为CSV并将数据上传到数据库, import java.io.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XLStoCSVConvert { static Connectivity conv; static Connection con = null; static Statement st = null; static String query=null; static void xlsx(File inputFile, File outputFile) { // For storing data into CSV files StringBuffer data […]

使用Apache POI将父列添加到Excel数据透视表

我正在尝试使用Apache-POI在Excel中用从数据库中检索的数据创build数据透视表。 目前我可以在数据透视表上创build正常的列标签,但我想能够添加父列表。 这是我希望我的表看起来如何: 这是我如何创build数据透视表: XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference( fromSheet.getSheetName() + "!" + tableRange), new CellReference("A6")); pivotTable.addRowLabel(0); // the row label pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 2, "Child Column 1"); pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 3, "Child Column 2"); 如何添加包含两个子列的父列?

为什么这个for循环不使用Apache POI迭代通过行? Java的

我有一个for循环内的另一个循环,第一个循环设置行,第二个循环读取通过4个单元格,第一次循环运行它效果很好,但之后,即时通讯猜测其不变行,因为它只是重复结果第一个循环,但没有显示单元格的值,这里是代码: for(int k=1; k<=2; k++){ XSSFRow row1 = worksheet.getRow(e); System.out.println("Row: "+e); e++; for(int i=0;i<Oleo18_1.size();i++){ XSSFCell c = row1.getCell((short) d); if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) { Oleo18_1.set(i, false); } else { Oleo18_1.set(i, true); c.setCellType(Cell.CELL_TYPE_STRING); } if(Oleo18_1.get(i) == true){ values_18_1.set(i, 9.09090909); } String a1Val = c.getStringCellValue(); System.out.println("valor ponderacion"+(d+1)+": "+values_18_1.get(i)); System.out.println("valor celda "+(d+1)+": "+a1Val); d++; […]

Apache POI读取第一行,但是会抛出空指针exception

嗨,我有一个3行1列的Excel表。 每个行在Excel中都包含一个通用格式的十位数字。 这是我写的代码, public class Tempclass { public static void main(String[] args) throws Exception { int[][] data; data = excelRead(); for (int i = 0; i < data.length; i++) { finddetails(data[i][0]); } public static int[][] excelRead() throws Exception { File excel = new File("C:\\test.xls"); FileInputStream fis = new FileInputStream(excel); HSSFWorkbook wb = new HSSFWorkbook(fis); HSSFSheet […]

使用Apache POI获取/修改一个或多个Excel工作表中的单元格值

我有一个用Java编写的小应用程序,它使用Apache POI来读取/修改Excel文档中的值。 我使用工作表名称来引用单元格,就像工作表“Sheet1”中的单元格A1一样,我使用“Sheet1!A1”。 应用程序从命令行运行三个参数:文档名称,具有要replace的值的单元格,以及要从中获取输出的单元格。 示例:ReadExcel test.xls Sheet1!B2 = 10; Sheet1!B3 = 20 Sheet1!B7 上面的例子工作正常。 问题是当我想修改单元格或从另一个工作表获得输出。 示例:ReadExcel test.xls Sheet1!B2 = 10; Sheet1!B3 = 20 Sheet2!B2 我的代码如下: package poitest; import java.util.List; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; […]

使用SXSSF POI编写大型Excel工作表

我正在使用POI()的stream式工作表编写一个大的Excel工作表(超过一百万条logging),但是我得到了java.lang.OutOfMemoryError: Java heap space 。 这是我的代码: public void exportExcel() { try { SXSSFWorkbook workbook = new SXSSFWorkbook(); Sheet sheet = workbook.createSheet(); List<Oject> list = dao.getList(); Cell cell = null; if (!list.isEmpty()) { Row row = sheet.createRow(0); cell = row.createCell(0); cell.setCellValue("s1"); cell = row.createCell(1); cell.setCellValue("s2"); cell = row.createCell(2); cell.setCellValue("s3"); cell = row.createCell(3); cell.setCellValue("s4"); cell = row.createCell(4); […]

一个单元格中有多个超链接

我有一个Excel中的超链接有问题。 我想在一个单元格中有几个超链接。 可能吗? 我读了一些关于矩形的东西,我应该把每个链接放在一起,但是我不知道如何去做。

从Excel表格中逐行读取图像

我从一张Excel表格读取图像。 我有一个Excel工作表,其中包括员工信息,如员工的姓名,地址和照片。 我想用Java读取它并将其存储到某个用户pipe理系统中。 以下是我的代码: int idColumn = …; POIFSFileSystem poifs = …; HSSFWorkbook workbook = new HSSFWorkbook(poifs); HSSFSheet sheet = workbook.getSheetAt(0); List<HSSFPictureData> pictures = workbook.getAllPictures(); for (int i = 0; i < pictures.size(); i++) { HSSFPictureData picture = pictures.get(i); // This does not map to the row from the picture: HSSFRowrow = sheet.getRow(i); HSSFCell idCell […]

如果Excel文件处于打开状态,Excel文件不能被Java-Program访问

我的代码应该打印一个数字(在这种情况下数字5)到指定的Excel工作簿中指定的单元格。 如果Excel-Workbookclosures,代码将起作用。 但是,如果Excel-Workbook打开,运行代码时出现以下错误消息: Exception in thread "main" java.io.FileNotFoundException: C:\Users\Username\Desktop\java-Programs\test.xlsm (The process can't access the file because it is used by another process) 代码如下: XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File("C:\\Users\\Username\\Desktop\\java-Programs\\test.xlsm"))); XSSFSheet ExcelSheet = wb.getSheet("Output"); XSSFRow row = ExcelSheet.getRow(3); XSSFCell cell = row.getCell(0); cell.setCellValue(5); FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Username\\Desktop\\java-Programs\\test.xlsm"); wb.write(fileOut); fileOut.close(); 我想在运行java代码时保持文件打开。 有人知道我必须改变,以便能够保持运行代码时打开Excel文件?

什么是Excel OOXML工作簿中名为“D%$&01_DevSheet”的不可见表单?

我正在编写一个程序,使用作为示例input数据提供给我的Apache POI从OOXML Excel Workbook中读取一些数据。 最后有一个名为D%$&01_DevSheet的奇怪表单。 这是充满公式单元格与奇怪的公式,引用工作簿中的大多数其他工作表。 以下是其中一个单元格的示例: 'Horizontal Agreements'!S15+"8I/!%4\" 在Excel中打开工作表时也不可见。 我以前从来没有遇到过这样的表格。 它看起来像某种内部的Excel结构。 谷歌search"D%$&01_DevSheet"和"excel" "DevSheet"没有任何用处。 此工作表不存在于我创build的任何testing工作簿中。 不过,我并不是一个Excel用户,我没有详尽地尝试所有的Excelfunction。 在这一点上,我将硬编码一个排除以_DevSheet结尾的工作表的规则。 但是,由于这个东西是在我的意见中出现的,我想我应该理解并妥善处理,所以我有一些基本的问题: Excel如何使用D%$&01_DevSheet工作表? 什么用户操作导致他们被创build? 他们是否经常定名? 检测这种Apache POI表单的最可靠的方法是什么?