Tag: apache poi

java – Apache POI SXSSFWorkbook无法创build工作表

在我的项目中的一个更大的代码stream中,我试图创build一个空白的SXSSFWorkbook并创build工作表并向其中写入数据,但是我无法给我一个运行时例外:没有这样的文件或目录。 我不明白为什么会这样。 我通过代码,找不到任何理由。 使用的jar子: poi-3.10-FINAL.jar poi-ooxml-3.10-FINAL.jar java.lang.RuntimeException:java.io.IOException:org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:568)org.apache.poi.xssf.streaming.SXSSFWorkbook上没有这样的文件或目录.createSheet(SXSSFWorkbook.java:584) 代码: csvDataWorkbook = new SXSSFWorkbook(-1); Sheet sheet = csvDataWorkbook.createSheet("csvDataSheet"); 上面的第二行抛出exception。 可能听起来很奇怪,但是直到昨天这个工作还不错,但是从今天起停止了。 的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <groupId>com.company</groupId> <artifactId>project</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> ……. <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.10-FINAL</version> </dependency> […]

Apache POI在SXSSF工作簿中评估公式

在我的项目中,我使用SXSSFWorkbook (Apache-POI 3.9)类来pipe理大型的电子表格。 现在我需要评估一些单元格的公式,所以我试着用这样的FormulaEvaluator … SXSSFWorkbook streamingWorkbook = new SXSSFWorkbook(100); … FormulaEvaluator fe = streamingWorkbook.getCreationHelper().createFormulaEvaluator(); … fe.evaluateInCell(cell); 但是这样做会引发exception java.lang.ClassCastException: org.apache.poi.xssf.streaming.SXSSFCell cannot be cast to org.apache.poi.xssf.usermodel.XSSFCell at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateInCell(XSSFFormulaEvaluator.java:177) at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateInCell(XSSFFormulaEvaluator.java:44) … 这个错误的直接原因很明显:方法.evaluateInCell接受一个Cell对象,但是在内部把这个Cell转换成一个XSSFCell 。 由于我传递的是SXSSFCell ,所以抛出exception。 所以问题是:在stream式工作簿(SXSSF)中有没有实现公式评估的方法?

为什么不能使用Apache POI为行和列设置值?

我需要为电子表格的特定行和列设置一个值,但是在i = 1之前我得到一个空指针。 我试过改变代码,但这个错误不断发生,我不知道为什么。 有谁知道为什么会发生这种情况? 我的代码 public Workbook build(Planilha planilha) { File file = new File(TEMPLATE_PATH); if (!file.exists()) { Log.error(this, String.format("File %s not exists.", file.getAbsolutePath())); throw new NotFoundException("File not exists."); } Workbook wb = null; try (FileInputStream fs = new FileInputStream(file)) { wb = new XSSFWorkbook(fs); wb = writeMetadatas(planilha, wb); Map<String, Integer> header = getHeader(wb); […]

用电子邮件validation生成使用Apache poi的Excel表

我生成的Excel表使用apache poi电子邮件 – 这意味着生成excel后,如果用户在单元格中input电子邮件,我需要validation该电子邮件 下面是我的代码 DVConstraint EmailConstraint=null; DataValidation EmaildataValidation =null; EmailConstraint=DVConstraint.createCustomFormulaConstraint("AND(FIND("+'@'+",$A$2),FIND(.,$A$2),ISERROR(FIND( ,$A$2)))");—->getting error here only EmaildataValidation =dataValidationHelper.createValidation(EmailConstraint, addressList1); EmaildataValidation.setSuppressDropDownArrow(false); sheet.addValidationData(EmaildataValidation); 当我执行这个方法时,我得到以下错误 Stacktrace:] with root cause org.apache.poi.ss.formula.FormulaParseException: Parse error near char 9 '@' in specified formula 'AND(FIND(@,$A$2),FIND(.,$A$2),ISERROR(FIND( ,$A$2)))'. Expected cell ref or constant literal at org.apache.poi.ss.formula.FormulaParser.expected(FormulaParser.java:188) at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1128) at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1083) at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1070) at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1430) at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1530) […]

如何通过Apache POI确定单元格中文本的一部分的颜色

我有Excel表格。 在单元格中,我们可以使文本( for example text1;text2 )和第1部分( text1 )具有黑色,而另一个( text2 )则具有例如红色。 为了读取Excel文件,我使用Apache POI。 请问如何确定文本第二部分的颜色( which in our case is red )。 为了确定单元格中的整个文本,我现在使用这个代码: HSSFCellStyle cellStyle = (HSSFCellStyle) currentCell.getCellStyle(); short cellColor = cellStyle.getFont(currentCell.getSheet().getWorkbook()).getColor(); 我不知道是否确定它是正确的

Apache下载后的POI初始计算公式

我使用Apache POI创buildExcel文件。 有两张不同的纸张。 工作表1是一些包含一些公式的模板。 在工作表2中,我想要得到第一页中的一个单元格的值。这是从表1中获取值的Excel公式: =IF(Sheet1!D7="";"";Sheet1!D7) 但是当我在D7中join一些文字的时候 cell = worksheet1.getRow(6).getCell(3); cell.setCellValue("SomeText"); 它不会接pipe表2的价值。如果我点击进入D7,并使用input,Sheet2将采取的价值,但我希望,阿帕奇poi做到这一点。 我该如何处理?

Poi Excel无法应用背景颜色

我正在使用POI来生成excel。 我有一个场景就像我想应用背景到表中的单元格行,但我无法做到这一点,我给了代码below.Please告诉什么是我的代码中的错误,或者是我所做的代码是正确的.. 码 System.out.println("Called"); try { XSSFWorkbook xb = new XSSFWorkbook(); XSSFSheet sheet = xb.createSheet(sheetName); XSSFCellStyle cellStyle = xb.createCellStyle(); XSSFFont font = xb.createFont(); int rowIdx = 10; short cellIdx = 1; CommonUtils.getGlobalVariable("GLOBAL.M_COMP_CODE")); int rowNo = 0; // Row 1 XSSFCellStyle boldCellStyle = xb.createCellStyle(); XSSFFont boldFont = xb.createFont(); XSSFRow row1 = sheet.createRow(rowNo); XSSFCell cell1 = row1.createCell(1); […]

将string转换为xls – Java

那么,我的项目中有一个string是这样的: ,0,0,0,0,0,1,1, ,0,0,0,7,8,6,6, ,3,3,3,3,9,4,5, ,5,6,6,9,5,2,1, ,6,2,8,0,0,3,9, ————————————————– Reference,-,C,A,A,G,A,T, 17-F1,.,.,.,.,.,T,C, 37-F2,1A,A,C,T,T,.,., 我需要将其转换为XLS文件

Apache POI – HSSF单元格格式中的垂直单元格alignment

有没有办法用Apache POI中的“垂直”文本方向编写单元格? 我只能find一个方法setRotation旋转整个文本,而不是像Excel应用“垂直”选项时显示的那样。 在视觉上,这看起来像: 本文 变 t h i s t e x t

java excel读取一列

我有一个列(B),我需要采取B3和B20之间的所有值 这是我的代码 try { OPCPackage fs; fs = OPCPackage.open(new File(getFilePath())); XSSFWorkbook wb = new XSSFWorkbook(fs); XSSFSheet sheet = wb.getSheet("Master column name – Used Car"); XSSFRow row; CellReference cr = new CellReference("B3"); row = sheet.getRow(4); System.out.println(row); 但正如你所看到的,我得到一个值,我不知道如何获得单元格B3的值,直到B20 你能帮忙吗?