Я пытаюсь импортировать CSV, и все ячейки показывают, как именно они были отправлены через CSV. На самом деле все прекрасно работает с преобразованием файла CSV в файл Excel, и я отправляю вложение по электронной почте только для того, чтобы убедиться, что данные в некоторых столбцах испорчены. Например, у меня есть дата в ячейке в формате мм / дд / гггг, и она показывает, когда я загружаю файл в Excel в виде целого числа. Есть другие клетки, которые также имеют эту проблему. Я не могу отформатировать каждую ячейку по отдельности, потому что я загружаю кучу ячеек разных типов, поэтому я надеялся, что смогу просто сказать файлу Excel просто взять то, что отправлено, и отобразить именно это.
Насколько я понимаю, изменение формата на «@» должно делать то, что я ищу, однако это не то, что я вижу.
При тестировании с известной мне ячейкой является датой, я попробовал следующее и не увидел никаких изменений.
worksheet.Cells["B1"].Style.Numberformat.Format = "@";
Однако, если указать форматирование, как это работает. Проблема, как я уже говорил выше, заключается в том, что у меня есть другие ячейки, которые я не знаю, являются ли они датами или где они мне нужно отформатировать.
worksheet.Cells["B1"].Style.Numberformat.Format = "mm/dd/yyyy";
Я также попробовал что-то подобное, и этоне сработало:
worksheet.Cells["A:XFD"].Style.Numberformat.Format = "@";
Вот мой полный текстовый пример:
MemoryStream outputStream = new MemoryStream();
using (var p = new ExcelPackage(outputStream))
{
var format = new OfficeOpenXml.ExcelTextFormat();
format.Delimiter = '|';
format.DataTypes = new[] { eDataTypes.String };
foreach (var page in fileContent)
{
ExcelWorksheet worksheet = p.Workbook.Worksheets.Add(page.Key);
worksheet.Cells.LoadFromText(page.Value, format);
worksheet.Cells["A:XFD"].Style.Numberformat.Format = "@";
worksheet.Cells[1, 2].Style.Numberformat.Format = "mm/dd/yyyy";
worksheet.Cells["B1"].Style.Numberformat.Format = "mm/dd/yyyy"; //this works but not when I change it to "@"
worksheet.Cells["MR11"].Style.Numberformat.Format = "@";
worksheet.Cells["MS11"].Style.Numberformat.Format = "@";
//worksheet.Cells["A:XFD"].Style.Numberformat.Format = "@";
//worksheet.Column(1).Style.Numberformat.Format = "@";
//worksheet.Column(2).Style.Numberformat.Format = "@";
}
p.Save();
}
Итак, насколько я понимаю, как символ "@" должен работать некорректно? Я не думаю, что тип данных должен быть проблемой, так как я использую CSV, который представляет собой одну большую строку.