我用Apache POI用字符串公式创建Excel文件,得到#VALUE!结果文件中有错误。
源代码是
public static void main(String[] args) throws IOException {
Workbook wb = new HSSFWorkbook();
FormulaEvaluator ev = wb.getCreationHelper().createFormulaEvaluator();
Sheet ws = wb.createSheet();
Row row = ws.createRow(0);
Cell cell;
cell = row.createCell(0);
cell.setCellValue("abc");
cell = row.createCell(1);
printCellInfo(row.getCell(1),"before formula");
cell.setCellFormula("IF(A1<>\"\",MID(A1,1,2),\" \")");
printCellInfo(row.getCell(1), "after formula");
ev.evaluateAll();
printCellInfo(row.getCell(1), "after recalc");
OutputStream os = new FileOutputStream("xx.xls");
wb.write(os);
}
(printCellInfo是我下面讲的Info方法)而错误单元格是B1。Excel显示“单元格中使用的值的数据类型不正确”。但是如果打开这个单元格进行编辑(使用F2)并按回车键-公式计算正确!!!
现在关于手机信息。帮助方法是
static void printCellInfo(Cell cell, String infoText) {
System.out.println("Cell "+CellReference.convertNumToColString(cell.getColumnIndex())+cell.getRowIndex()+" "+infoText);
int ct = cell.getCellType();
System.out.println(" Cell type "+ct);
if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
ct = cell.getCachedFormulaResultType();
System.out.println(" Cached type "+ct);
}
switch (ct) {
case Cell.CELL_TYPE_NUMERIC:
System.out.println(" Number <"+cell.getNumericCellValue()+">");
break;
case Cell.CELL_TYPE_STRING:
System.out.println(" String <"+cell.getStringCellValue()+">");
}
System.out.println("============================");
}
主执行的输出为
Cell B0 before formula
Cell type 3
============================
Cell B0 after formula
Cell type 2
Cached type 0
Number <0.0>
============================
Cell B0 after recalc
Cell type 2
Cached type 1
String <ab>
============================
所以B0一开始是空白,公式插入后是数字。为什么POI这样做,也许问题就出在这里?不幸的是,重新计算后POI中正确的数据类型在excel中并不正确。
顺便说一下,从POI IF(A1
有什么想法吗?我发现唯一的话题 https://openclassrooms.com/forum/sujet/apache-poi-formula-valeur 互联网上,有一些想法,但没有可行的解决方案......
cell = row.getCell(1);
cell.setCellValue(cell.getStringCellValue());
也无济于事。
我最近也遇到了同样的问题。在保存我的工作簿之前,我用这一行解决了这个问题:
myWorkbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
我在我的机器上尝试了你的代码,它运行良好。
我在Excel上为mac 2013使用beta POI 3.13
您的Excel表也正常工作(在您在聊天中给我之后)
所以问题是POI版本和Excel 2010库之间的兼容性错误。
这也是你的工作表。
问题内容: 使用uCanaccess检索保存在桌面中的数据库时出现错误。 我的代码如下: 导入java.util.Scanner; 导入java.sql。*; 公共类dbTest1 { } 我将很乐意为您解决此错误提供任何建议。 谢谢,文斯 问题答案: 好吧,首先,导入您的库(lib文件夹中的jar文件)。http://sourceforge.net/projects/ucanaccess/fil
如何使用作为字符串提供的公共和私有RSA密钥进行加密和解密。因为我正在使用RSACryptoServiceProvider,它需要XML格式,所以是否有可能使用提供的字符串。谢谢。
问题内容: 我的问题是关于:Public String(char [] value) 。有人可以帮我吗:它是否在内部为每个值[i]循环。特别, Public String(char [] value)的含义是: 或不 ? 问题答案: Java是开放源代码,如果将源代码附加到Eclipse,则始终可以使用F3来检查功能。在这种情况下,String类具有以下正在寻找的构造函数: 编辑:如果您想知道,A
我想得到一个文件内容的公钥,这是一个文件内容看起来像什么的例子(用生成): 如果我是对的,这不是公钥,但是可以从这个字符串中获取公钥。 这个答案回答了我的问题https://stackoverflow.com/a/19387517/2735398 但答案似乎不起作用。我有个例外: 当看到答案的评论时,我不是唯一有问题的人... 如何修复异常?或者有没有其他方法可以从字符串中获取公钥?
问题内容: 我收到以下错误: 第一个字段是格式。 有任何想法吗? 谢谢。 问题答案: 当您将字符串值插入日期列时,则需要在使用函数期间将其转换为日期。使用此功能时,您将提供字符串的格式。 功能格式: 因此,您的查询将如下所示: 参见带有演示的SQL Fiddle
我想知道您是否可以在hasNext(字符串模式)中指定要扫描的内容。例如,我想检索正在扫描的行的前三个字符。那么有没有办法指定诸如 在这里我要抓取该行的前3个字母字符。