/// <summary>
///
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="sheetName">sheetName名称</param>
/// <param name="filePath">导出路径</param>
/// <param name="Filename">文件名称</param>
/// <returns>string.empty</returns>
public static string ExportExcel(System.Data.DataTable dt, String sheetName, string filePath, string Filename)
{
if (null == dt)
return "数据源不能为null";
if (sheetName == string.Empty || sheetName == "")
return "sheetName名称不能为空";
if (filePath == string.Empty || filePath == "")
return "文件路径不能为空";
if (Filename == string.Empty || Filename == "")
return "文件名称不能为空";
string allPath = filePath + Filename;
try
{
object objOpt = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel;
Microsoft.Office.Interop.Excel._Workbook wbk;
Microsoft.Office.Interop.Excel._Worksheet wst;
excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
wbk = excel.Workbooks.Add(true);
wst = (Microsoft.Office.Interop.Excel._Worksheet)wbk.ActiveSheet;
wst.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVisible;
wst = (Worksheet)wbk.Worksheets[1];
wst.Name = sheetName;
int cnt = dt.Rows.Count;
int columncnt = dt.Columns.Count;
// *****************获取数据********************
object[,] objData = new Object[cnt + 1, columncnt]; // 创建缓存数据
// 获取列标题
for (int i = 0; i < columncnt; i++)
{
objData[0, i] = dt.Columns[i].ColumnName;
}
// 获取具体数据
for (int i = 0; i < cnt; i++)
{
System.Data.DataRow dr = dt.Rows[i];
for (int j = 0; j < columncnt; j++)
{
objData[i + 1, j] = dr[j];
}
}
//********************* 写入Excel******************
Range r = wst.get_Range(wst.Cells[1, 1], wst.Cells[cnt + 1, columncnt]);
r.Value2 = objData;
for (int j = 0; j < columncnt; j++)
{
if (dt.Rows[1][j] is int || dt.Rows[1][j] is decimal)
{
Range rColumCost4 = wst.get_Range(wst.Cells[1, j], wst.Cells[dt.Rows.Count + 1, j]);
rColumCost4.NumberFormat = "#,##0";
rColumCost4.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
}
if (dt.Rows[1][j] is DateTime)
{
Range rColumCost4 = wst.get_Range(wst.Cells[1, j], wst.Cells[dt.Rows.Count + 1, j]);
rColumCost4.NumberFormat = "yyyy-MM-dd";
rColumCost4.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
}
}
Range rangeTitle = wst.get_Range(wst.Cells[1, 1], wst.Cells[1, columncnt]);
rangeTitle.Interior.ColorIndex = 15;
rangeTitle.Font.Bold = true;
r.EntireColumn.AutoFit();
wbk.SaveAs(allPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
wbk.Close(objOpt, objOpt, objOpt);
}
catch (Exception ex)
{
throw (ex);
}
finally
{
//扼杀线程Exel
foreach (Process p in Process.GetProcessesByName("Excel"))
{
if (string.IsNullOrEmpty(p.MainWindowTitle))
{
p.Kill();
}
}
}
return string.Empty;
}