ApachePOI for Excel:将单元格类型设置为";“文本”;整列
我需要使用Java库生成一个.xls(Excel)文件 该文件将在a列中包含电话号码列表,格式为“0221…”或“+49221…”-因此Excel默认情况下将其解释为数字单元格。这是不好的,因为前导的0或+将被修剪 为了解决这个问题,我可以使用ApachePOI for Excel:将单元格类型设置为";“文本”;整列,excel,xls,apache-poi,xlsx,Excel,Xls,Apache Poi,Xlsx,我需要使用Java库生成一个.xls(Excel)文件 该文件将在a列中包含电话号码列表,格式为“0221…”或“+49221…”-因此Excel默认情况下将其解释为数字单元格。这是不好的,因为前导的0或+将被修剪 为了解决这个问题,我可以使用cell.setCellType(cell.cell\u TYPE\u STRING),它可以很好地工作,但只适用于我为其设置的特定单元格 如何将此设置应用于整个列(即,即使是所有剩余的单元格,用户将在其中输入其他电话号码) 在Excel中,这是可能的:选
cell.setCellType(cell.cell\u TYPE\u STRING)
,它可以很好地工作,但只适用于我为其设置的特定单元格
如何将此设置应用于整个列(即,即使是所有剩余的单元格,用户将在其中输入其他电话号码)
在Excel中,这是可能的:选择整个列,并应用单元格类型(该设置在保存/加载文件后仍然有效)
但是我找不到正确的POI方法
- 首先,我假设它应该类似于
。但我找不到类似的东西(可能我只是瞎了眼?库中有很多应用文本样式的工具,如“对齐中心”等)sheet.setDefaultCellType(int colNum)
- 然后我想:也许它只能应用于a或类似的东西,但我还没有弄清楚它是如何工作的
- 会有帮助吗
通过创建带有@符号的数据格式并在CellStyle中使用它
对象,然后将其传递给setDefaultColumnStyle()方法
在本例中,可以将列的默认数据类型设置为文本。
我还没有做进一步的实验,但确实怀疑这是可能的
与其他样式对象类似的内容,以将默认类型设置为
数字格式,甚至是自定义格式,如货币
下面是一些受Vlad答案启发的示例代码:
DataFormat fmt = workbook.createDataFormat();
CellStyle textStyle = workbook.createCellStyle();
textStyle.setDataFormat(fmt.getFormat("@"));
worksheet.setDefaultColumnStyle(0, textStyle);
上述代码将工作表第一列的默认样式设置为文本
谢谢你,弗拉德 Vlad:
这就解决了大部分问题。我发现所有空行的格式都是我想要的。然而,我有初始零的行看起来和工作良好;但是,如果我必须用另一个以零开始的值来更改一个预先存在的值,那么零就会消失。因此,我建议在单元格中创建值时添加代码,以将setCellStyle重置为文本。以下是一些片段:
方法公共单元格createCell(行r!,BBjNumber单元格,BBjString值!)
methodret c
#text_format! = #wb!.createCellStyle()
#text_format!.setDataFormat(#format!.getFormat("@"))
方法端
这可能有助于其他一些单独搜索初始零。
谢谢你的发帖。
Alex现在使用POI设置它的更好方法是使用
内置信息类
例如:
将列类型转换为数字的步骤
CellStyle numericStyle = workbook.createCellStyle();
numericStyle.setDataFormat(BuiltinFormats.getBuiltinFormat(2)); // 2 For Number
worksheet.setDefaultColumnStyle(colId, numericStyle);
可以看到内置信息格式的完整列表,看起来不错!一旦我回到项目中,我将尝试这个解决方案。谢谢我也这么做了。var cllstyl=this.Workbook.CreateCellStyle();var工作簿=新的HSSF工作簿();var currDataFormat=workbook.CreateDataFormat();cllstyl.DataFormat=currDataFormat.GetFormat(“@”);sheet.SetDefaultColumnStyle(1,cllstyl);但它不显示“文本”格式,而是显示“日期”。请帮我做这个。
CellStyle numericStyle = workbook.createCellStyle();
numericStyle.setDataFormat(BuiltinFormats.getBuiltinFormat(2)); // 2 For Number
worksheet.setDefaultColumnStyle(colId, numericStyle);