0

我正在构建一个winform基于桌面的应用程序。作为应用程序的一部分,我正在生成 Excel 输出。

当我尝试输入日期值时出现错误。

在 C# 中,日期值为"11-10-12". 但是,在 Excel 中,它打印为10-11-2012.

这是代码,它做到了:

String Date1 = "11-10-12";
oSheet.Cells[i + 2, 1] = DateTime.ParseExact(Date1, "dd-MM-yy", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy");

知道什么可能是错的吗?

编辑

Excel 中的单元格格式默认为常规。但是,当输入值时,它会更改为日期。

在此处输入图像描述

4

4 回答 4

4

尝试使用以下命令更改 excel-Cell 的格式:

yourCellRange.NumberFormat = "dd-MM-yy"; 

或将字符串格式调整为 excel 格式。

于 2013-01-18T15:06:00.053 回答
1

试试:

DateTime.Now.ToString("dd-MM-yy");

或者:

String Date1 = "11-10-12";
var Format = "dd-MM-yy";
var TimeBuff = DateTime.ParseExact(Date1, Format, 
CultureInfo.InvariantCulture).ToString(Format);
oSheet.Cells[i + 2, 1] = TimeBuff;

Parse 和 ToString 都必须包含相同的格式。如果您得到相同的结果,则绝对是 Excel 失败。

编辑:

证据

只为 DJ KRAZE

证据

于 2013-01-18T15:03:37.943 回答
1

尝试这样做

worksheet.get_Range(Cell1, Cell2 + worksheet.Rows.Count).NumberFormat = "dd-mmm-yyyy";

当您添加值时,您可以尝试

worksheet.Cells[row, column] = String.Format("{0:dd-MMM-yyyy}", Date1);
于 2013-01-18T15:09:42.013 回答
1

不幸的是,这些建议都没有帮助。所以,我禁用了 Excel 中的自动格式化:

因此,这里是禁用 Excel 中的自动(日期)格式的代码片段:

String Date1 = "11-10-12";
oSheet.Cells[i + 2, 1] = "'" + Date1;

所以,诀窍是在字符串前面加上一个有效的撇号。

谢谢

于 2013-01-18T16:15:26.517 回答