Employ Class
namespace DataGridView2Excel { public class Employ { public string EmpNO { get; set; } public string EmpName { get; set; } public DateTime Birthday { get; set; } public decimal Salary { get; set; } } }
WinForm C# Demo
using Excel = Microsoft.Office.Interop.Excel; namespace DataGridView2Excel { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = GetSource(); } private List<Employ> GetSource() { List<Employ> source = new List<Employ>(); source.Add(new Employ() { EmpNO = "001", EmpName = "張三", Birthday = new DateTime(1970, 1, 1), Salary = 55000 }); source.Add(new Employ() { EmpNO = "002", EmpName = "李四", Birthday = new DateTime(1981, 11, 11), Salary = 35000 }); source.Add(new Employ() { EmpNO = "003", EmpName = "王五", Birthday = new DateTime(1985, 7, 7), Salary = 25000 }); return source; } private void btnExcel_Click(object sender, EventArgs e) { SaveFileDialog save = new SaveFileDialog(); save.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); save.FileName = "Excel Export demo"; save.Filter = "*.xlsx|*.xlsx"; if (save.ShowDialog() != DialogResult.OK) return; // Excel 物件 Excel.Application xls = null; try { xls = new Excel.Application(); // Excel WorkBook Excel.Workbook book = xls.Workbooks.Add(); // Excel WorkBook,預設會產生一個 WorkSheet,索引從 1 開始,而非 0 // 寫法1 Excel.Worksheet Sheet = (Excel.Worksheet)book.Worksheets.Item[1]; // 寫法2 Excel.Worksheet Sheet = (Excel.Worksheet)book.Worksheets[1]; // 寫法3 Excel.Worksheet Sheet = xls.ActiveSheet; // 把 DataGridView 資料塞進 Excel 內 DataGridView2Excel(Sheet); // 儲存檔案 book.SaveAs(save.FileName); } catch (Exception) { throw; } finally { xls.Quit(); } } private void DataGridView2Excel(Excel.Worksheet Sheet) { // 下面方法二選一使用 // 利用 DataGridView for (int i = 0; i < dataGridView1.Rows.Count; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { string value = dataGridView1[j, i].Value.ToString(); Sheet.Cells[i + 1, j + 1] = value; } } // 利用 List<Employ> List<Employ> empList = (List<Employ>)dataGridView1.DataSource; foreach (Employ emp in empList) { int rowindex = empList.IndexOf(emp) + 1, colindex = 1; Sheet.Cells[rowindex, colindex++] = emp.EmpNO; Sheet.Cells[rowindex, colindex++] = emp.EmpName; Sheet.Cells[rowindex, colindex++] = emp.Birthday; Sheet.Cells[rowindex, colindex++] = emp.Salary; } } } }
- Type.Missing
但在 dotNet 4.5 參數有預設值 Type.Missing,那表示就不用輸入啦,^^
- 參考資料
- 論壇討論
- 如何:以程式設計方式建立新活頁簿
- 如何:以程式設計方式列出活頁簿中的所有工作表
- Workbook.SaveAs 方法
- 王者歸來 C# 完全開發範例集 範例 342
沒有留言:
張貼留言