1. 程式人生 > >C# DataSet數據導入Excel 修正版- .net FrameWork 4.0以上

C# DataSet數據導入Excel 修正版- .net FrameWork 4.0以上

except 一段 tab tac office mat tar reflect line

 引入  Microsoft.Office.Interop.Excel.dll
格式:標題加了下劃線,單元格內容居中
1
using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 using System.Web.UI; 5 6 public static void DataSetToExcel(DataTable dataTable, string SaveFile) 7 { 8 Microsoft.Office.Interop.Excel.Application excel;
9 10 Microsoft.Office.Interop.Excel._Workbook workBook; 11 12 Microsoft.Office.Interop.Excel._Worksheet workSheet; 13 14 object misValue = System.Reflection.Missing.Value; 15 16 excel = new Microsoft.Office.Interop.Excel.Application();
17 18 workBook = excel.Workbooks.Add(misValue); 19 20 workSheet = (Microsoft.Office.Interop.Excel._Worksheet)workBook.ActiveSheet; 21 22 int rowIndex = 1; 23 24 int colIndex = 0; 25 26 //取得標題
27 foreach (DataColumn col in dataTable.Columns) 28 { 29 colIndex++; 30 31 excel.Cells[1, colIndex] = col.ColumnName; 32 Microsoft.Office.Interop.Excel.Range range = workSheet.Range[workSheet.Cells[1, colIndex],workSheet.Cells[1,colIndex]]; 33 range.Font.Underline = true; 34 } 35 36 //取得表格中的數據 37 foreach (DataRow row in dataTable.Rows) 38 { 39 rowIndex++; 40 41 colIndex = 0; 42 43 foreach (DataColumn col in dataTable.Columns) 44 { 45 colIndex++; 46 47 excel.Cells[rowIndex, colIndex] = 48 49 row[col.ColumnName].ToString().Trim(); 50 51 Microsoft.Office.Interop.Excel.Range range = workSheet.Range[excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]]; 52 range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; 53 } 54 } 55 56 excel.Visible = false; 57 excel.DisplayAlerts = false; 58 59 if (workSheet != null) 60 { 61 workBook.SaveAs(SaveFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, 62 63 misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, 64 65 misValue, misValue, misValue, misValue, misValue); 66 } 67 68 69 dataTable = null; 70 71 workBook.Close(true, misValue, misValue); 72 73 excel.Quit(); 74 75 76 releaseObject(workSheet); 77 78 releaseObject(workBook); 79 80 releaseObject(excel); 81 82 } 83 84 private static void releaseObject(object obj) 85 { 86 try 87 { 88 System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); 89 obj = null; 90 } 91 catch 92 { 93 obj = null; 94 } 95 finally 96 { 97 GC.Collect(); 98 } 99 }

Call funxction example:

  DataSetToExcel(ds.Tables[0], @"D:\ZhaoNick\Desktop\test.xls");

這次需要做一個windowServices,主要的功能就是從local db提取數據存入ftp excel file中,在提取數據成功後存入dataset中,在導入到excel時要給標題加下劃線和內容設置居中時,發現報了“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: “object”未包含“get_Range”的定義”這麽一段錯誤,後來才發現是.net版本問題或者說是寫法有問題。。不過最後還是解決了這個坑。

C# DataSet數據導入Excel 修正版- .net FrameWork 4.0以上