导出Excel
/// <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; }