上次发布了一个用Excel组件将数据导入到Excel的代码,用的过程中,感觉不好,特别是速度很慢。在博客园看到了一个NPOI Excel读写的开源组件,很不错,还是国人开发的。赞一个,谢谢NPOI开发团队,有这么好的东西奉献给大家啊。呵呵,我也把自己使用的代码奉献一下,也算推广一下吧。这个东西使用的好处是:使用简单,速度特快。NPOI的使用教程很详细,下面直接上代码:
using NPOI.Util; using NPOI.HSSF.Model ; using NPOI.HSSF.UserModel ; using NPOI.HSSF ;
......
Code// 将数据集转换到Excel: ConvertDataTableToExcel ConvertDataGridViewToExcel // 目前支持的数据类型有:DataTable,二维数组,二维交错数组,DataGridView,ArrayList // 2010.01.03 采用NPOI类库,改善操作速度,便于扩展
/// /// 将数据集导出到Excel文件 /// /// 一维数组 /// Excel文件名称 /// 工作簿名称 /// 是否转换成功 public static bool ConvertToExcel(T[] data,string xlsSaveFileName,string sheetName) { FileStream fs = new FileStream (xlsSaveFileName, FileMode.Create ) ; try { HSSFWorkbook newBook = new HSSFWorkbook () ; HSSFSheet newSheet =(HSSFSheet ) newBook.CreateSheet (sheetName ) ;//新建工作簿 HSSFRow newRow = (HSSFRow )newSheet.CreateRow(0) ;//创建行 for (int i = 0 ; i //写入数据 } newBook .Write (fs ) ; return true ; } catch (Exception err) { throw new Exception ("转换数据到Excel失败:"+err.Message ) ; } finally { fs.Close () ; } } /// /// 将数据集导出到Excel文件 /// /// 二维数组 /// Excel文件名称 /// 工作簿名称 /// 是否转换成功 public static bool ConvertToExcel(T[,] data,string xlsSaveFileName,string sheetName) { FileStream fs = new FileStream (xlsSaveFileName, FileMode.Create ) ; try { HSSFWorkbook newBook = new HSSFWorkbook () ; HSSFSheet newSheet =(HSSFSheet ) newBook.CreateSheet (sheetName ) ;//新建工作簿 for (int i = 0 ; i //创建行 for (int j = 0 ; j //写入数据 } } newBook .Write (fs ) ; return true ; } catch (Exception err) { throw new Exception ("转换数据到Excel失败:"+err.Message ) ; } finally { fs.Close () ; } } /// /// /// /// 将数据集导出到Excel文件 /// /// 交错数组 /// Excel文件名称 /// 工作簿名称 /// 是否转换成功 /// public static bool ConvertToExcel(T[][] data,string xlsSaveFileName,string sheetName) { FileStream fs = new FileStream (xlsSaveFileName, FileMode.Create ) ; try { HSSFWorkbook newBook = new HSSFWorkbook () ; HSSFSheet newSheet =(HSSFSheet ) newBook.CreateSheet (sheetName ) ;//新建工作簿 for (int i = 0 ; i //创建行 for (int j = 0 ; j //写入数据 } } newBook .Write (fs ) ; return true ; } catch (Exception err) { throw new Exception ("转换数据到Excel失败:"+err.Message ) ; } finally { fs.Close () ; } } /// /// 将数据集导出到Excel文件 /// /// DataTable对象 /// Excel文件名称 /// 工作簿名称 /// 是否转换成功 public static bool ConvertToExcel(System.Data.DataTable dt, string xlsSaveFileName,string sheetName) { FileStream fs = new FileStream (xlsSaveFileName, FileMode.Create ) ; try { HSSFWorkbook newBook = new HSSFWorkbook () ; HSSFSheet newSheet =(HSSFSheet ) newBook.CreateSheet (sheetName ) ;//新建工作簿 for (int i = 0 ; i //创建行 for (int j = 0 ; j //写入数据 } } newBook .Write (fs ) ; return true ; } catch (Exception err) { throw new Exception ("转换数据到Excel失败:"+err.Message ) ; } finally { fs.Close () ; } } /// /// 将数据集导出到Excel文件 /// /// DataGridView对象 /// Excel文件名称 /// 工作簿名称 /// 是否转换成功 public static bool ConvertToExcel(System.Windows.Forms.DataGridView dgv, string xlsSaveFileName,string sheetName) { return ConvertToExcel((System.Data.DataTable )dgv.DataSource ,xlsSaveFileName,sheetName ) ; }下面是导入数据到DataTable:
Code/// /// 将数据导出到DataTable中 /// /// 二维数组数据 /// 列名 /// DataTable对象 public static System.Data.DataTable ConvertToDataTable(T[,] data , string[] columnsName) { System.Data.DataTable dt = new System.Data.DataTable () ; if (data.GetLength (1)>columnsName.Length ) { throw new Exception ("列名长度不足"); } try { //先添加列名 for (int i = 0 ; i new DataColumn (columnsName [i ],typeof (System.String ) ) ; dt.Columns.Add (dc ) ; } //添加数据 for (int i = 0 ;i for (int j =0 ; j return dt ; } catch (Exception err) { throw new Exception ("转换数据到DataTable失败:"+err.Message ) ; } } /// /// 将数据导出到DataTable中 /// /// 二维数组数据 /// DataTable对象 public static System.Data.DataTable ConvertToDataTable(T[,] data ) { System.Data.DataTable dt = new System.Data.DataTable () ; try { //先添加列名 for (int i = 0 ; i new DataColumn() ; dt.Columns.Add (dc ) ; } //添加数据 for (int i = 0 ;i for (int j =0 ; j return dt ; } catch (Exception err) { throw new Exception ("转换数据到DataTable失败:"+err.Message ) ; } } /// /// 将数据导出到DataTable中 /// /// 交错数组数据 /// 列名 /// DataTable对象 public static System.Data.DataTable ConvertToDataTable(T[][] data , string[] columnsName) { System.Data.DataTable dt = new System.Data.DataTable () ; if (data[0].Length >columnsName.Length ) { throw new Exception ("列名长度不足"); } try { //先添加列名 for (int i = 0 ; i new DataColumn (columnsName [i ],typeof (System.String ) ) ; dt.Columns.Add (dc ) ; } //添加数据 for (int i = 0 ;i for (int j =0 ; j return dt ; } catch (Exception err) { throw new Exception ("转换数据到DataTable失败:"+err.Message ) ; } } /// /// 将数据导出到DataTable中 /// /// 交错数组数据 /// DataTable对象 public static System.Data.DataTable ConvertToDataTable(T[][] data) { System.Data.DataTable dt = new System.Data.DataTable () ; try { //先添加列名 for (int i = 0 ; i new DataColumn ( ) ; dt.Columns.Add (dc ) ; } //添加数据 for (int i = 0 ;i for (int j =0 ; j return dt ; } catch (Exception err) { throw new Exception ("转换数据到DataTable失败:"+err.Message ) ; } }到此为止哦。这玩意的确好使,下次再用用看,里面功能很丰富啊。
编程爱好者,关注.NET软件开发,Matlab混合编程及网络技术
欢迎光临我的Cnblog博客:http://www.cnblogs.com/asxinyu/
欢迎大家进行交流,QQ :1287263703
E-mail:asxinyu@qq.com,asxinyu@126.com
Tag标签: Matlab,Matlab开发,Matlab混合编程,C#.NET开发
本文来自博客,转载请标明出处:http://blog.csdn.net/asxinyu_usst/archive/2011/01/19/6151481.aspx