问题是当我运行我的应用程序并且有一个网格(带有字符串和日期列)并将其另存为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
类型),所以我认为它不是来自代码。
还有其他人遇到过这个问题吗?
答案 0 :(得分:1)
试试这个:
cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("MM/dd/yyyy hh:mm");
答案 1 :(得分:1)
尝试定义一个静态WritableCellFormat
来处理日期格式。
// Required classes.
import java.util.TimeZone;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.WritableCellFormat;
// Defined once.
public static final WritableCellFormat DATE_CELL_FRMT;
static {
DateFormat df = new DateFormat("MM/dd/yyyy hh:mm");
df.getDateFormat().setTimeZone(TimeZone.getTimeZone("GMT"))
DATE_CELL_FRMT = new WritableCellFormat(df);
}
// Usage
writableCell = new DateTime(sheetColumn, sheetRow, gmtDate, DATE_CELL_FRMT);
答案 2 :(得分:0)
您的问题似乎与"jExcelApi - cell date format reusing doesn't work"相似。也许,这个问题的答案可以帮助您解决问题。
重述答案: 根据{{3}}(问题:"我收到错误消息'太多不同的单元格格式'")格式无法在不同的工作表中重复使用,因为它们是不是为了这种方式重复使用
在您的情况下,代码可能是这样的:
WritableCellFormat format = new jxl.write.WritableCellFormat(new jxl.write.DateFormat("m/d/yyyy h:mm"));
for(java.util.Date date : someDateList){
WritableCell cell = new jxl.write.DateTime(someColumn, someRow, date, format);
sheet.addCell(cell);
}