【发布时间】:2012-06-16 01:00:09
【问题描述】:
问题是当我运行我的应用程序并且有一个网格(带有字符串和日期列)并将其保存为 Excel 文件时。
当我第一次保存它时,所有内容的格式都正确,但是当我再次尝试再次保存相同的精确网格时,日期格式消失了(它只是一个浮点值,当我右键单击并格式化为dateTime 对象有效)。当我重新启动我的应用程序时,它会第一次再次运行,然后再次丢失格式
代码如下所示:
Calendar calendar = Calendar.getInstance();
calendar.setTime((Date)data);
Date gmtDate = new Date(((Date) data).getTime() + (calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)));
writableCell = new jxl.write.DateTime(sheetColumn, sheetRow, gmtDate, jxl.write.DateTime.GMT);
cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("m/d/yyyy h:mm");
writableCell.setCellFormat(cellFormat);
sheet.addCell(writableCell);
我一直在断点,一切正常(在进入工作表之前它一直知道它是dateTime 类型),所以我不认为它来自代码。
还有其他人遇到过这个问题吗?
【问题讨论】:
-
你展示了格式的创建,你能展示你是如何保存文件的吗?
-
很抱歉回复晚了(我已经离开了它进来的那一天)。所以我要做的是使用 JFileChooser 将其保存为 .xls,在我使用格式之前的代码我制作工作簿 jxl.write.WriteableWorkbook workbook = jxl.Workbook.createWorkbook(filename); sheet = workbook.createSheet("报告",0);然后在我做格式化之后我说:workbook.write;工作簿.close;
-
我试过了,但无法重现您所看到的内容。可以提供 SSCCE 吗?
-
我对代码进行了更深入的研究(我最初并没有编写它),它似乎在重用格式单元(jxl 不允许),但是当我拿出重用格式单元格的代码我得到了一个异常,因为 excel 文件真的很大,并且正在创建太多的格式单元格似乎
-
查看代码以了解是否禁用“合理化”。通过设置系统属性“jxl.norat”或调用“setRationalization(false)”(在 WorkbookSettings 对象上)。启用后,jxl 将尝试消除重复的单元格格式。