Пожалуйста, взгляните на следующий фрагмент кода. Я просто открыть Excel файл myfile.xlsx
и добавить строки из объекта типа List<Account>
(где мой Account
объект имеет только Date
, Account
и Amount
свойства), и сохраните файл с именем myoutputfile.xlsx
. Я хотел бы, чтобы ячейки, где я пишу даты, имеют формат даты, а ячейки, где у меня есть, имеют числовой формат. Однако, если я попробую код ниже, все ячейки форматируются в формате #.00
(даты также). Я пробовал все, может кто-нибудь, пожалуйста, скажите мне, что происходит? Я использую NPOI.NPOI форматирует все ячейки одинаковым образом
XSSFWorkbook wb;
var fileName = "C:/tmp/myfile.xlsx";
var outputFileName = "C:/tmp/myoutputfile.xlsx";
using (var file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
wb = new XSSFWorkbook(file);
}
XSSFSheet sheet = (XSSFSheet) wb.GetSheetAt(0);
for (int i = 0; i < accountRecs.Count(); ++i) {
var rec = accountRecs[i];
var row = sheet.CreateRow(i);
var dateCell = row.CreateCell(3);
dateCell.SetCellValue(rec.Date);
dateCell.CellStyle.DataFormat = wb.CreateDataFormat().GetFormat("dd/MM/yyyy");
var accountCell = row.CreateCell(4);
accountCell.SetCellValue(rec.Account);
var totalValueCell = row.CreateCell(16);
totalValueCell.SetCellValue(rec.Amount);
totalValueCell.CellStyle.DataFormat = wb.CreateDataFormat().GetFormat("#.00");
}
using (var file = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
{
wb.Write(file);
file.Close();
}
Возможно, связано с http://stackoverflow.com/a/3603750/619252. Попробуйте использовать встроенный формат для 'dd/MM/yyyy'. –