Я подозреваю, что ваши данные 2016-01-28 12:06:00.0
, ... являются строками, а не датами. Если вы установите строки в ячейку Excel
, то ячейка не может быть ячейкой даты. Значение ячейки должно быть числовым значением c, чтобы ячейка была ячейкой даты. Таким образом, вам нужно преобразовать эти значения String
s в Date
s перед установкой значения ячейки. Затем установите значение Date
в качестве значения ячейки.
Используя текущий apache poi 4.1.2
, это можно сделать с помощью java.time.format.DateTimeFormatter
и java.time.LocalDateTime
, поскольку существует Cell.setCellValue (java .time. Значение LocalDateTime) сейчас.
До apache poi 3.17
это можно сделать с помощью java.text.SimpleDateFormat
и java.util.Date
. Cell.setCellValue (java .util.Date value) - это используемый тогда метод setCellValue.
Полный пример:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
class CreateExcelDateCells {
public static void main(String[] args) throws Exception {
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {
String[][] data = new String[][] {
new String[] {"Date"},
new String[] {"2016-01-28 12:06:00.0"},
new String[] {"2016-01-27 08:29:00.0"},
new String[] {"2016-01-18 21:37:00.0"}
};
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S", Locale.US);
//SimpleDateFormat simpleDateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S", Locale.US); // up to apache poi 3.17
CellStyle dateCellStyle = workbook.createCellStyle();
dateCellStyle.setDataFormat(workbook.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));
Sheet sheet = workbook.createSheet();
for (int r = 0; r < data.length; r++) {
Row row = sheet.createRow(r);
Cell cell = row.createCell(0);
if (r == 0) {
cell.setCellValue(data[r][0]); // String cell value
} else {
cell.setCellValue(LocalDateTime.parse(data[r][0], dateTimeFormatter)); // Date cell value
//cell.setCellValue(simpleDateFormatter.parse(data[r][0])); // Date cell value up to apache poi 3.17
cell.setCellStyle(dateCellStyle);
}
}
sheet.autoSizeColumn(0);
workbook.write(fileout);
}
}
}