c# - Winform-导出到 Excel - XLWorkbook - 日期和时间 NumberFormat
问题描述
我的要求是——
- 我必须导出
Datatable
到.xls
文件。 - 对于 中的所有日期列
Datatable
,excel 单元格应该是Date
格式而不是文本或常规。这是因为,用户可以根据需要根据日期过滤数据。
我的代码
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Workbook xlWorkBook = ExcelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
StringBuilder sb = new StringBuilder();
sb.Append("<html><body>");
sb.Append("<table style='border: 1px solid black;'>");
var index = 1;
sb.Append("<tr>");
sb.Append("<th colspan='9'>SANJAY MALAKIYA</th>");
sb.Append("</tr>");
sb.Append("<tr></tr>");
sb.Append("<tr>");
sb.Append("<td colspan='9'><b>SANJAY</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td style='border: 1px solid black'>SrNO</td>");
foreach (DataColumn column in dtDataTable1.Columns)
{
sb.Append("<td style='border: 1px solid black'>" + column.ColumnName + "</td>");
}
sb.Append("</tr>");
ExcelApp.Windows.Application.ActiveWindow.DisplayGridlines = false;
StringBuilder objSB = new StringBuilder();
foreach (DataRow row in dtDataTable1.Rows)
{
sb.Append("<tr>");
sb.Append("<td style='width:100px;border: 1px solid black'>" + index.ToString() + "</td>");
foreach (DataColumn column in dtDataTable1.Columns)
{
sb.Append("<td style='width:100px;border: 1px solid black'>" + row[column.ColumnName].ToString() + "</td>");
}
index++;
sb.Append("</tr>");
}
if (dtDataTable1.Rows.Count > 0)
{
ExcelApp.Columns.AutoFit();
}
sb.Append("</table>");
sb.Append("</body></html>");
String Todaysdate = DateTime.Now.ToString("dd-MM-yyyy");
if (!Directory.Exists("C:\\Users\\Krupal\\Desktop\\" + Todaysdate))
{
Directory.CreateDirectory("C:\\Users\\Krupal\\Desktop\\" + Todaysdate);
}
using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Krupal\\Desktop\\" + Todaysdate + "\\Summury_final " + Convert.ToDateTime(cmbmonth.SelectedItem).ToString("dd/MM/yyyy") + ".XLS"))
{
file.WriteLine(sb.ToString());
}
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
Workbook xlWorkBook1 = ExcelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
xlWorkBook1 = Excel.Workbooks.Open("C:\\Users\\Krupal\\Desktop\\" + Todaysdate + "\\Summury_final " + Convert.ToDateTime(cmbmonth.SelectedItem).ToString("dd/MM/yyyy") + ".XLS", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Microsoft.Office.Interop.Excel.Worksheet Wt = (Excel.Worksheet)xlWorkBook1.Worksheets.get_Item(1);
Excel.Visible = true;
解决方案
You can set the date format like below
Range rg = (Excel.Range)worksheetobject.Cells[1,1];
rg.EntireColumn.NumberFormat = "MM/DD/YYYY";
推荐阅读
- mongodb - 从结果中排除空值
- flutter - Flutter Divider 是错误的颜色
- android - 需要来自 Android ContentResolver 的路径
- visual-studio - Visual Studio 使用多个不同的程序集、产品和文件名编译同一个项目
- node.js - 将十六进制数据保存到 NodeJS 中的文件
- python-3.x - python 3.x insert 函数在使用负一进行索引时的行为与其他列表函数不同,这是有原因的吗?
- php - 如何确定给定的邮政编码是否介于 (K2T - K4P) 之间
- websphere - Websphere Console 9.0 - 在 websphere 控制台中指定应用程序特定文件路径的位置
- excel - 如何在 Excel 中为矩阵创建公式
- momentjs - momentjs 添加一周返回错误的 res