我目前正在为.Net使用aspose.cells,需要根据我们应用中使用的当前语言设置自定义格式的日期。问题是,我们通过下面的代码设置格式,但如果系统(OS)日期格式不同,我们的自定义格式会进行折腾,而excel会以系统(OS)格式显示日期。这有解决方法吗?以下是代码:
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);
还尝试了解决方案here,但无济于事。
答案 0 :(得分:0)
@Gautam, 请注意,语句CultureInfo.CreateSpecificCulture(“en-US”)。DateTimeFormat.ShortDatePattern返回一个模式,它是Excel的内置格式(M / d / yyyy),因此将其设置为单元格(或单元格范围)自定义格式会自动将格式转换为内置格式,这将根据将要加载电子表格的计算机的区域设置进行更改。我建议你使用自定义模式为mm / dd / 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
担任开发人员传播者