ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath = ExcelUtility.Export.ToExcel(dt, " 导出结果 "); 第二个新增功能, 依据数据源 (DataTable DataGridView) 的列类型自动将与之对应的 EXCEL 列的单元格式设为相同的格式内容显示, 如 : 整数类型显示在单元格内无小数 的数字格式, 有小数位的类显示在单元格内 位小数数字格式, 日期类型显示在单元格内日期 + 时间的日期格式, 布尔类型显示在单元格内布尔格式, 任意一个无模板的导出方法 均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板, 且指定导出的列名, 以及导出列名的重命名 public void TestExportToExcelByDataTable() string[] expcolnames = "Col", "Col", "Col", "Col", "Col", "Col" ; Dictionary<string, string> expcolasnames = new Dictionary<string, string>() "Col"," 列一 ", "Col"," 列二 ", "Col"," 列三 ", "Col"," 数字列 ", "Col"," 列五 ", "Col"," 日期列 "
; string excelpath = ExcelUtility.Export.ToExcel(dt, " 导出结果 ", null, expcolnames, expcolasnames); 第三个新增功能, 在第二个新增功能的基础上, 增加可以自定义设置列的单元格显示格式 ( 支持日期类型 数字类型 ), 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板, 且指定某些列的显示格式 public void TestExportToExcelByDataTable() var coldataformatdic = new Dictionary<string, string> "Col","0.000", // 将 Col 列 DOUBLE 类型的 EXCEL 对应列格式设置为显示成 位小数 ( 默认为 位小数 ) "Col","yyyy-mm-dd"// 将 Col 列 DateTime 类型的 EXCEL 对应列格式设置为年月日 ( 默认为 yyyy/mm/dd hh:mm:ss) ; // 更多设置格式可在 EXCEL 的设置单元格格式中的数字选项卡中的自定义格式列表 ( 若无, 可自定义, 建议先在 EXCEL 中测试好格式字符串后再用于程序中 ) string excelpath = ExcelUtility.Export.ToExcel(dt, " 导出结果 ", coldataformats: coldataformatdic);
换种格式定义测试 : /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板, 且指定某些列的显示格式 public void TestExportToExcelByDataTable() var coldataformatdic = new Dictionary<string, string> "Col"," #,##0.00_);( #,##0.00)", // 将 Col 列 DOUBLE 类型的 EXCEL 对应列格式设置为显示成包含货币格 式, 如 :.00( 默认为 位小数 ) 0 "Col","yyyy\" 年 \"m\" 月 \"d\" 日 \";@"// 将 Col 列 DateTime 类型的 EXCEL 对应列格式设置为中文年月日, 如 :0 年 月 日 ( 默认为 yyyy/mm/dd hh:mm:ss) ; // 更多设置格式可在 EXCEL 的设置单元格格式中的数字选项卡中的自定义格式列表 ( 若无, 可自定义, 建议先在 EXCEL 中测试好格式字符串后再用于程序中 ) string excelpath = ExcelUtility.Export.ToExcel(dt, " 导出结果 ", coldataformats: coldataformatdic); 注意事项说明 : 想要实现导出的 EXCEL 单元格依据数据类型自动设置或手动指定格式, 需首先确保数据源的列与自动或手动设置的格式相符, 即列类型必需是数字类型 日期类 型 布尔类型, 不能是以字符串的形式存在的这些所谓的 数字类型 日期类型 布尔类型
第四个新增的功能, 可指定 DataGridView 是否可以导出隐藏列 ( 不显示的列 ) 及指定依据 DataGridView 标题列名导出相应列数据, 示例代码如下 : 0 /// 测试方法 : 测试将 DataGridView 数据导出到 EXCEL 文件, 无模板, 且不导出隐藏列 public void TestToExcelByDataGridView() var grid = GetDataGridViewWithData(); string excelpath = ExcelUtility.Export.ToExcel(grid, " 导出结果 ", null, false); 第五个新增功能,DataGridView 若改变列的显示位置, 导出的数据也能与界面显示的数据同步调整, 示例代码如下 : 0 /// 测试方法 : 测试将 DataGridView 数据导出到 EXCEL 文件, 无模板, 改变列的显示位置, 导出隐藏列 public void TestToExcelByDataGridView() var grid = GetDataGridViewWithData(); // 模拟改变列的显示位置 grid.columns[0].displayindex = ; grid.columns[].displayindex = 0; string excelpath = ExcelUtility.Export.ToExcel(grid, " 导出结果 ", null, true);
以下是 GetDataGridViewWithData 模拟数据方法 : private DataGridView GetDataGridViewWithData() var grid = new DataGridView(); var dt = GetDataTable(); foreach (DataColumn col in dt.columns) bool v = col.ordinal >? false : true; grid.columns.add(new DataGridViewTextBoxColumn() DataPropertyName = col.columnname, HeaderText =" 列名 " + col.columnname, Visible = v,valuetype=col.datatype ); 0 foreach (DataRow row in dt.rows) ArrayList values = new ArrayList(); foreach (DataColumn col in dt.columns) values.add(row[col]); grid.rows.add(values.toarray()); return grid; 0