Пользовательское форматирование даты Aspose.cells независимо от формата даты ОС

В настоящее время я использую aspose.cells для .Net, и мне нужно установить собственный формат даты на основе текущего языка, используемого в нашем приложении. Проблема в том, что мы устанавливаем формат с помощью приведенного ниже кода, но если формат даты системы (ОС) отличается, наше пользовательское форматирование не работает, и Excel отображает дату в формате системы (ОС). Есть ли обходной путь для этого? Ниже приведен код:

var dateStyle = dataWorksheet.Cells.GetCellStyle(startRowNumber, column);

            dateStyle.Custom = CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat.ShortDatePattern;
            var dateRange = dataWorksheet.Cells.CreateRange(startRowNumber, column, dataTable.Rows.Count + 1, 1);

            dateRange.SetStyle(dateStyle);

Также попробовал решение здесь, но безрезультатно.


person Gautam Baindur    schedule 05.12.2016    source источник


Ответы (1)


@Gautam, обратите внимание, оператор CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat.ShortDatePattern возвращает шаблон, который является встроенным форматом Excel (M/d/yyyy), поэтому устанавливает его в ячейку (или диапазон ячеек) в качестве пользовательского формата автоматически преобразует формат во встроенный, который будет меняться в зависимости от языкового стандарта компьютера, на котором будет загружена электронная таблица. Я бы посоветовал вам использовать пользовательский шаблон в виде мм/дд/гггг, который даст аналогичный результат, но формат не изменится в зависимости от локали. Пожалуйста, проверьте следующий фрагмент кода, а также прикрепленный снимок, показывающий диалоговое окно «Формат ячейки».

C#

var book = new Workbook();
var sheet = book.Worksheets[0];
var dateStyle = sheet.Cells.GetCellStyle(0, 0);

dateStyle.Custom = "mm/dd/yyyy";//CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat.ShortDatePattern; //represents M/d/yyyy
var dateRange = sheet.Cells.CreateRange(1, 0, 10, 1);
dateRange.SetStyle(dateStyle);
dateRange.PutValue("26-Sep-2014", true, false);
book.Save(dir + "output.xlsx");

введите здесь описание изображения

Примечание. Я работаю разработчиком-евангелистом в Aspose

person Prorata    schedule 06.12.2016