111,129
社区成员
发帖
与我相关
我的任务
分享
//EPPlus
private void Exp2Excel(DataTable dt)
{
string xlsFileName = string.Empty; ;
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel文件(*.xlsx)|*.xlsx";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
xlsFileName = sfd.FileName;
else
return;
using (ExcelPackage package = new ExcelPackage(new FileInfo(xlsFileName)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
Console.WriteLine("1-- " + DateTime.Now.ToLongTimeString());
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName.Equals("cinvcode_03") || column.ColumnName.Equals("cinvcode_04"))
{
continue;
}
worksheet.Cells[1, column.Ordinal+1].Value = column.ColumnName;
}
string drValue;
int iRow;
int iCol;
for (int i = 0; i < dt.Rows.Count; i++)
{
foreach (DataColumn column in dt.Columns)
{
iRow = i + 2;
iCol = column.Ordinal + 1;
if (column.ColumnName.Equals("cinvcode_03") || column.ColumnName.Equals("cinvcode_04"))
{
continue;
}
drValue = dt.Rows[i][column].ToString();
switch (column.DataType.ToString())
{
case "System.Decimal":
case "System.Double":
double doubV = 0;
double.TryParse(drValue, out doubV);
if (doubV == 0)
worksheet.Cells[iRow, iCol].Value = "";
else
worksheet.Cells[iRow, iCol].Value = doubV;
break;
case "System.DBNull":
worksheet.Cells[iRow, iCol].Value = "";
break;
default:
worksheet.Cells[iRow, iCol].Value = dt.Rows[i][column].ToString();
break;
}
}
}
Console.WriteLine("2-- " + DateTime.Now.ToLongTimeString());
package.Save();
MessageBox.Show("成功导出为Excel!", "系统信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
你觉得瓶颈真的在epplus或者npoi上吗?先吧worksheet有关的内容注释掉看看要花多少时间吧 if (column.Ordinal == 3 || column.Ordinal == 4) // Use zero-based index instead of string for comparison
{
continue;
}
替换掉
if (column.ColumnName.Equals("cinvcode_03") || column.ColumnName.Equals("cinvcode_04"))
{
continue;
}
Type dataType = column.DataType;
if (dataType == typeof(System.Decimal) || dataType == typeof(System.Double))
{
}
else if (dataType == typeof(System.DBNull))
{
}
else
{
}