java来excel日期格式化

时间:2012-06-16 01:00:09

标签: java excel datetime jxl

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

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

3 个答案:

答案 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);
}