我创建了一个jexcelApi类的包装器,可以轻松地将对象列表导出到Excel.为了最小化对象创建,单元格格式创建为静态字段,并在连续的导出调用中重用.但我的日期格式有问题 - 第一个调用工作正常,但在所有连续导出日期单元格中都有数字格式而不是日期格式.如果我为日期格式创建一个新对象而不是使用静态字段,一切都很好.有没有理由为不同的工作表或工作簿使用相同的格式对象失败?
这是代码,简化了异常处理,省略了其他数据类型,可能还缺少一些导入:
ExcelCellGenerator.java:
import jxl.write.WritableCell;
public interface ExcelCellGenerator<T> {
WritableCell getCell(int col, int row, T arg);
}
Run Code Online (Sandbox Code Playgroud)
ExcelCellGeneratorFactory.java:
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.NumberFormat;
import jxl.write.NumberFormats;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import ExcelExporter.DateTimeExtractor;
final class ExcelCellGeneratorFactory {
private ExcelCellGeneratorFactory() {}
private static final WritableCellFormat DATE_FORMAT = new WritableCellFormat ( new DateFormat ("dd MMM yyyy hh:mm:ss")); // reusing this field fails
static public <T> ExcelCellGenerator<T> createDateCellGenerator(final DateTimeExtractor<T> extractor) {
return new ExcelCellGenerator<T>() {
public WritableCell getCell(int col, int …Run Code Online (Sandbox Code Playgroud)