4

问题是当我运行我的应用程序并有一个网格(带有字符串和日期列)并将其另存为 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在进入工作表之前它总是知道它是一种类型),所以我不认为它来自代码。

有没有其他人遇到过这个问题?

4

3 回答 3

2

尝试定义一个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);
于 2014-02-12T11:49:35.690 回答
2

尝试这个:

cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("MM/dd/yyyy hh:mm");
于 2012-06-16T01:11:29.060 回答
0

您的问题似乎类似于"jExcelApi - cell date format reusing doesn't work"。可能,该问题的答案可以帮助您解决问题。

复述答案:根据常见问题解答(问题:“我收到错误消息'太多不同的单元格格式'”)格式不能在不同的工作表中重复使用,因为它们不是为了以这种方式重复使用的

在您的情况下,代码可能是这样的:

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);
}
于 2014-08-21T06:06:41.120 回答