如何用c#将DataTable 数据导出到Execl
将DataTable 数据导出到Execl格式 源代码如下: 首先new一个保存的对话框: private System.Windows.Forms.SaveFileDialog m_objSave = new SaveFileDialog(); //导出数据方法 public void m_mthExportToExecl() { this.m_objSave.DefaultExt = "xls"; this.m_objSave.Filter = "Excel文件(*.xls)|*.xls"; if (this.m_objSave.ShowDialog() == DialogResult.OK) { m_mthDoExport(dtFindCharge, m_objSave.FileName); } } //具体导出的方法 private void m_mthDoExport(DataTable dtSource, string strFileName) { int rowNum = dtSource.Rows.Count; int columnNum = dtSource.Columns.Count; int rowIndex = 1; int columnIndex = 0; if (dtSource == null || string.IsNullOrEmpty(strFileName)) { return; } if (rowNum > 0) { Excel.Application xlApp = new Excel.ApplicationClass(); xlApp.DefaultFilePath = ""; xlApp.DisplayAlerts = true; xlApp.SheetsInNewWorkbook = 1; Excel.Workbook xlBook = xlApp.Workbooks.Add(true); //将DataTable的列名导入Excel表第一行 foreach (DataColumn dc in dtSource.Columns) { columnIndex++; xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName; } //将DataTable中的数据导入Excel中 for (int i = 0; i < rowNum; i++) { rowIndex++; columnIndex = 0; for (int j = 0; j < columnNum; j++) { columnIndex++; xlApp.Cells[rowIndex, columnIndex] = dtSource.Rows[i][j].ToString(); } } xlBook.SaveCopyAs(strFileName); xlApp = null; xlBook = null; } }
C#导出Excel的主要方法如下: 代码: public void CellToCell(DataSet ds) { #region 实例化所需对象 // 实例化一个Excel文档对象 Microsoft.Office.Interop.Excel.Application exapp = new Microsoft.Office.Interop.Excel.Application(); // 设置可见 // 如果为false的话,会造成看不到Excel文档的情况 exapp.Visible = true; // 设置工作簿格式 Microsoft.Office.Interop.Excel.Workbook myworkbook = exapp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); // 实例化工作表集 Microsoft.Office.Interop.Excel.Sheets mysheets = myworkbook.Worksheets; // 实例化工作表 Microsoft.Office.Interop.Excel.Worksheet mysheet = (Microsoft.Office.Interop.Excel.Worksheet)mysheets.get_Item(1); #endregion #region 具体操作 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { for (int j = 0; j < ds.Tables[0].Columns.Count; j++) { Console.Write("\t{0}\t|", j); mysheet.Cells[i+1, j+1] = ds.Tables[0].Rows[i][j].ToString(); } Console.WriteLine(); } #endregion MessageBox.Show("导出完毕,请不要忘记保存导出成功的文件!"); exapp.Caption = "Excel Demo 测试文件"; } 注意: 1. 引用的DLL版本与客户机安装的Office版本的匹配 2. 「异常来自 HRESULT:0x800A03EC」这个可能是由于单元格索引的问题所引起的,Excel第一个单元格是1,1 而不是0,0