4

我正在使用一个名为 Gembox 的外部组件来创建 Excel 报告。

将 C# 中的 DateTime 属性导出到 Excel 时,该值在 Excel 中显示为数字(例如“-693593”)。所有其他(基本)属性类型都显示为表示的类型。

在 Excel 中,我希望将 DateTime 显示为正确的日期,在 Gembox 选项中我找不到将格式设置为日期的选项。

另一种选择是在 Excel 中设置值时使用 .ToString() 转换 DateTime,这会产生所需的结果,但有更好的方法吗?

一些简单的代码示例:

ExcelFile excelFile = new ExcelFile();
ExcelWorksheet excelWorksheet = excelFile.Worksheets.Add("MyWorksheet");

int rownumber = 0;
int columnnumber = 2;
DateTime dateTime = DateTime.Now;

excelWorksheet.Cells[rownumber, columnnumber].Value = dateTime;

输出示例:

ExcelExport 示例

4

3 回答 3

3

确保变量 'dateTime' 是 DateTime 对象,然后

excelWorksheet.Cells[rownumber, columnnumber].Value = dateTime;
excelWorksheet.Cells[rownumber, columnnumber].Style.NumberFormat = "dd MMM yyyy";
于 2014-04-04T08:42:08.290 回答
2

格式化 excel 单元格以显示日期时间,就像在 Excel 本身中一样,

ExcelFile excelFile = new ExcelFile();
ExcelWorksheet excelWorksheet = excelFile.Worksheets.Add("MyWorksheet");

int rownumber = 0;
int columnnumber = 2;
DateTime dateTime = DateTime.Now;

Microsoft.Office.Interop.Excel.Range range = excelWorksheet.Cells[rownumber, columnnumber] as Range;
range.NumberFormat = "dd/MMM/yyyy";
range.Value2 = dateTime;

这会将您的 Excel 单元格设置为日期格式。

在行中 range.NumberFormat = "dd/MMM/yyyy"; 您可以提供以下任何格式:

dd/MM/yy         // 01/01/01
dd/MMM/yy         // 01/Jan/01
ddd/MMM/yyyy      // Mon/Jan/2001
ddd dd/MMM/yyyy   // Mon 01/Jan/2001
hh:mm:ss          // 01:01:01  - 24 hour
hh:mm:ss AM/PM    // 01:01:01 pm - 12 hour

the format below is for used by the .Net format only, this will not work with Excel.
HH:mm:ss          // 01:01:01  - 24 hour
hh:mm:ss t        // 01:01:01 pm - 12 hour
HH:mm:ss.fff      // 01:01:01.123  - 24 hour with millisecond


or combination of both date and time;
ddd dd/MMM/yyyy hh:mm:ss
于 2013-05-16T10:16:46.200 回答
0

实际上,您需要设置值方法:

var value = DateTime.Now;
var cell = excelWorksheet.Cells[rownumber, columnnumber]
cell.SetValue(value);
cell.Style.NumberFormat = "dd/MM/yyyy";

覆盖识别正确的类型 (DateTime) 并在 Excel 中相应地显示它。使用版本 Gembox v3.9 测试

于 2020-05-24T22:58:03.613 回答