NPOI를 사용하여 Excel 파일에 날짜를 쓰는 데 문제가 발생
저는 현재 NPOI를 사용하여 asp.net mvc 앱의 데이터베이스를 기반으로 Excel 파일을 생성하고 있습니다.Excel에 날짜를 기록하려고 할 때 계속 발생하는 작은 문제 하나를 제외하고는 코드 작업이 거의 완료되었습니다.
데이터베이스(MS SQL Server)에 41883, 41913 등으로 저장된 날짜가 있습니다.C#에서 다음을 사용하여 DataTime 개체로 변환할 수 있습니다.
DateTime dt = DateTime.FromOADate(Convert.ToDouble(41883));
Excel 날짜를 작성하는 데 사용하는 코드는 다음과 같습니다.
var cell = excelRow.CreateCell(columnIndex);
IDataFormat format = workbook.CreateDataFormat();
short dateFormat = format.GetFormat("dd/MM/yyyy");
cell.SetCellValue(DateTime.FromOADate(Convert.ToDouble(dbDateValue)));
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.DataFormat = dateFormat;
cell.CellStyle = cellStyle;
이것은 제 코드(날짜 쓰기 부분을 하는 조각)의 샘플일 뿐입니다.이 코드의 문제는 날짜 셀의 일부만 실제로 날짜로 포맷된다는 것입니다. 다른 모든 것에 대해서는 여전히 데이터베이스 41883, 41913 등의 값이 표시됩니다. 물론 Excel에서 짧은 날짜/날짜 형식을 선택하여 적용할 수 있습니다(그러나 저는 원하지 않습니다).
왜 그런 행동이 나타날 수 있는지 누가 알려줄 수 있나요? (포맷은 셀의 일부에만 적용됨)...저는 심지어 HSSF 데이터 형식을 사용하려고 했습니다.빌드 형식("날짜")으로 가져오지만 이 경우 셀이 포맷되지 않았습니다.
위의 이미지가 제 문제를 더 잘 설명해 줍니다.첫 번째 열의 첫 번째 셀을 선택하면 셀이 "사용자 정의" 형식으로 표시됩니다.형식이 지정되지 않은 다른 모든 값의 경우 일반입니다.셀을 선택하면 문제없이 Excel에서 날짜 형식으로 포맷할 수 있습니다.모든 날짜 셀에 대해 동일한 코드가 실행되지만 일부만 올바른 형식을 얻기 때문에 이상합니다.
아무것도 변환할 필요가 없습니다.스타일을 만들어 셀에 적용해야 합니다.
var newDataFormat = workbook.CreateDataFormat();
var style = workbook.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.DataFormat = newDataFormat.GetFormat("MM/dd/yyyy HH:mm:ss");
foreach (var objArticles in tempArticles)
{
//Create a new Row
var row = sheet.CreateRow(rowNumber++);
//Set the Values for Cells
row.CreateCell(0).SetCellValue(objArticles.ProjectId);
row.CreateCell(1).SetCellValue(objArticles.ProjectName);
row.CreateCell(2).SetCellValue(objArticles.MetricDescription);
row.CreateCell(3).SetCellValue(objArticles.MetricValue);
var cell = row.CreateCell(4);
cell.SetCellValue(objArticles.BuildDate);
cell.CellStyle = style;
var cell5 = row.CreateCell(5);
cell5.SetCellValue(objArticles.CreateDate);
cell5.CellStyle = style;
}
언급URL : https://stackoverflow.com/questions/26529254/issue-with-writing-a-date-to-excel-file-using-npoi
'programing' 카테고리의 다른 글
이 CSS 선택기는 무엇입니까?[class*="span"] (0) | 2023.08.30 |
---|---|
도커 합성으로 빌드된 이미지의 이름을 정의하려면 어떻게 합니까? (0) | 2023.08.30 |
JSON 데이터를 MySQL로 가져와서 웹 페이지에 시각화하는 방법은 무엇입니까? (0) | 2023.08.30 |
Git에서 동일한 커밋의 파일에 현재 커밋 해시를 쓰는 방법은 무엇입니까? (0) | 2023.08.30 |
Solr을 고려해야 할 시기 (0) | 2023.08.30 |