C# DataTable数据导入Excel数据【转载经过本人测试修改】
2011-07-05 22:52
831 查看
/******************************************************** * 如果引用->添加引用->.net选项卡下有->using Microsoft.Office.Interop.Excel;->直接引入 * 如果没有,请把->Microsoft.Office.Interop.Excel.dll->放到Debug目录下-> * 引用->添加引用->浏览选项卡下有->using Microsoft.Office.Interop.Excel;->直接引入 * 然后再类的上边添加using Microsoft.Office.Interop.Excel; * * * ******************************************************/ using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Excel; using System.Windows.Forms; namespace DataGridviewPage { class ExcleHelper { /// <summary> /// /// </summary> /// <param name="dt">需要导出到excel的数据表dt</param> /// <param name="saveFileName">存储文件名</param> /// <returns></returns> public static void DataTableToExcel(System.Data.DataTable dt, string saveFileName) { if (dt == null) return; //-***************获取excel对象*************** // string saveFileName = ""; TimeSpan dateBegin = new TimeSpan(DateTime.Now.Ticks); bool fileSaved = false; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = "xls"; saveDialog.Filter = "Excel文件|*.xls"; saveDialog.FileName = "导入记录查询结果 " + DateTime.Today.ToString("yyyy-MM-dd"); 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) { MessageBox.Show("无法启动Excel,可能您未安装Excel"); return; } Microsoft.Office.Interop.Excel.Workbook workbook = xlApp.Workbooks.Add(true); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; Microsoft.Office.Interop.Excel.Range range; // 列索引,行索引,总列数,总行数 int colIndex = 0; int RowIndex = 0; int colCount = dt.Columns.Count; int RowCount = dt.Rows.Count; // *****************获取数据********************* // 创建缓存数据 object[,] objData = new object[RowCount+1, colCount]; // 获取列标题 for (int i = 0; i < dt.Columns.Count; i++) { objData[RowIndex, colIndex++] = dt.Columns[i].Caption; // dgv.Columns[i].HeaderText; } // 获取具体数据 for (RowIndex = 0; RowIndex < RowCount; RowIndex++) { for (colIndex = 0; colIndex < colCount; colIndex++) { objData[RowIndex+1, colIndex] = dt.Rows[RowIndex][colIndex]; } } //*******************设置输出格式****************************** //设置顶部説明 合并的单元格 range = worksheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, colCount]); range.MergeCells = true; range.RowHeight = 38; range.Font.Bold = true; range.Font.Size = 14; range.Font.ColorIndex = 10;//字体颜色 xlApp.ActiveCell.FormulaR1C1 = "导入记录查询结果"; //特殊数字格式 //range = worksheet.get_Range(xlApp.Cells[2, colCount], xlApp.Cells[RowCount, colCount]); xlApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter; range = worksheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colCount]); range.Font.Bold = true; range.RowHeight = 20; //********************* 写入Excel******************* range = worksheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[RowCount+2, colCount]); range.Value2 = objData; System.Windows.Forms.Application.DoEvents(); //***************************保存********************** if (saveFileName != "") { try { workbook.Saved = true; workbook.SaveCopyAs(saveFileName); fileSaved = true; } catch (Exception ex) { fileSaved = false; MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message); } } else { fileSaved = false; } xlApp.Quit(); GC.Collect();//强行销毁 TimeSpan dateEnd = new TimeSpan(DateTime.Now.Ticks); TimeSpan tspan = dateBegin.Subtract(dateEnd).Duration(); MessageBox.Show("导出成功,用时" + tspan.ToString() + "秒"); if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //保存成功后打开此文件 } } }
相关文章推荐
- asp.net(C#)开发之一 dataset(datatable) 数据导入excel
- C# OleDb导入excel表数据到listview以及对应修改excel表
- EXTJS学习系列提高篇:第二篇(转载)作者殷良胜,结合EXT2.2+C#.net实现将数据导入Excel的功能
- C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】
- C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)【转载】
- c#将Excel数据导入到数据库的实现代码(转载)
- C# 实现 Excel文件的数据导入
- [转载]C#导入XLS数据到数据库
- 如何提高C#中将数据导入到Excel的性能
- C#实现将DataGridView中的数据导入到Excel中
- c#将Excel数据导入到数据库的实现代码
- C#数据导入/导出Excel文件及winForm导出Execl总结
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C# Excel导入数据到数据库
- C#做窗体应用程序时,对excel涉及的背景色设置,边框设置,数据如何导入等的实现
- C#把DataTable里的数据批量导入SQLite
- C# 把Excel中的数据批量导入DataSet中
- winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
- C#将DataTable数据导出到EXCEL的两种方法