1. 程式人生 > 實用技巧 >C# 匯出Excel

C# 匯出Excel

需要新增引用 Microsoft.Office.Interop.Excel

參考路徑 C:\Program Files (x86)\Microsoft Office\Office16\DCF\Microsoft.Office.Interop.Excel.dll

public static void ExportExcel(System.Windows.Forms.DataGridView dgvMain)
        {

            string fileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");
            
string saveFileName = ""; System.Windows.Forms.SaveFileDialog saveDialog = new System.Windows.Forms.SaveFileDialog { DefaultExt = "xlsx", Filter = "Excel檔案|*.xlsx", FileName = fileName }; saveDialog.ShowDialog(); saveFileName
= saveDialog.FileName; if (saveFileName.IndexOf(":") < 0) return; Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { System.Windows.Forms.MessageBox.Show(
"無法建立Excel物件,您的電腦可能未完全安裝Office", "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); return; } Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks; Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; for (int i = 0; i < dgvMain.ColumnCount; i++) { worksheet.Cells[1, i + 1] = dgvMain.Columns[i].HeaderText; } for (int r = 0; r < dgvMain.Rows.Count; r++) { for (int i = 0; i < dgvMain.ColumnCount; i++) { worksheet.Cells[r + 2, i + 1] = dgvMain.Rows[r].Cells[i].Value; } System.Windows.Forms.Application.DoEvents(); } worksheet.Columns.EntireColumn.AutoFit(); if (saveFileName != "") { try { workbook.Saved = true; workbook.SaveCopyAs(saveFileName); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("匯出檔案時出錯,檔案可能正被使用!\n" + ex.Message, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); } } xlApp.Quit(); GC.Collect(); }