我强制使用的数字是零到文本。它运行良好,但它显示绿色图标在角落点击,它显示错误。我的问题是,如何停止或禁用此按钮以编程方式不显示在excel工作表上。
在excel工作表中,您可以很容易地禁用错误检查,但我希望通过代码进行此操作。
如有任何帮助,将不胜感激。
谢谢!
发布于 2016-04-07 20:36:47
简短回答:
在单元格级别上抑制Excel检错的能力在POI 3.14+中是支持的。详见下文。另一种选择是将单元格保留为数字,但应用带前导零的掩码,即:SpreadSheetFormatCell(sheet, {dataFormat="00000"}, row, column)。
更长的答案:
阅读了一段时间后,POI 3.14中添加了抑制此错误的功能。不幸的是,CF11与一个旧版本3.9捆绑在一起。但是,您可以使用this.javaSettings在Application.cfc中加载POI3.14(或更高版本)来访问较新的功能,并附带一些java代码。
从像往常一样创建电子表格开始:
// format a few cells as text, then add values with leading zero
cfSheet = SpreadSheetNew("Test", true);
SpreadSheetFormatCell(cfSheet, {dataFormat="@"}, 1, 1);
SpreadSheetSetCellValue(cfSheet, "01234", 1, 1);
SpreadSheetFormatCell(cfSheet, {dataFormat="@"}, 1, 2);
SpreadSheetSetCellValue(cfSheet, "05678", 1, 2);为了使用较新的类操作电子表格,必须使用POI WorkbookFactory将其读入新的工作簿对象中。工厂支持从物理文件或字节流加载。(为了简洁起见,我将使用字节)。
// load workbook from byte array
bytes = SpreadsheetReadBinary( cfSheet );
stream = createObject("java", "java.io.ByteArrayInputStream").init(bytes);
factory = createObject("java", "org.apache.poi.ss.usermodel.WorkbookFactory");
wb = factory.create(stream);
// grab reference to our worksheet
jSheet = wb.getSheet("Test");接下来,创建一个range对象,表示要抑制"number as text“错误的单元格。然后将范围添加到工作表中的忽略错误列表中。
// Create range of cells containing numbers as text
CellRange = createObject("java", "org.apache.poi.ss.util.CellRangeAddress");
rangeToModify = CellRange.valueOf("A1:A2");
// Flag the range to ignore "number as text" error
IgnoreTypes = createObject("java", "org.apache.poi.ss.usermodel.IgnoredErrorType");
jSheet.addIgnoredErrors(rangeToModify, [ IgnoreTypes.NUMBER_STORED_AS_TEXT] );最后,将更新的工作簿保存到文件中:
// Save to disk
fos = createObject("java", "java.io.FileOutputStream").init("c:/path/uniqueName.xlsx");
wb.write(fos);
fos.close();https://stackoverflow.com/questions/36482985
复制相似问题