用传统的导出方法:只是将DataGrid信息用html输出,文件名后辍是.xls而已。如果想将这个方法导入到Sql Server 中,会提示出错。因为它不是标准的Excel格式文件。
用本例中的导出方法:会输出标准的Excel格式文件,非常稳定,不会死锁Excel进程,支持中文文件名,支持表头导出,支持大多数数据库导入。
实现算法:
利用Excel组件将DataGrid控件内容生成Excel临时文件,并存放在服务器上,并用Response方法将生成的Excel文件下载到客户端,再将生成的临时文件删除。
具体步骤:
1.在项目中引用Excel组件
Interop.Excel.dll 文件版本1.3.0.0
2.项目中应有一个目录(本例中Template目录),以便存放Excel文件(名字自己定)
3.导入方法类
以下是代码片段: /// <summary>
//创建一个WorkBook对象 int rowCount = grid.Items.Count + 1; //DataTable行数+GirdHead //利用二维数组批量写入 for (int j = 0; j < rowCount; j++) } range = (Excel.Range)workSheet.Cells[1, 1]; //写入Exel的坐标 if (workBook.Saved) if (range != null) if (workSheet != null) GC.Collect();//强制代码垃圾回收 |
4.下载文件方法类
以下是代码片段: /// <summary> return true; |
5.应用方法
以下是代码片段: protected void btnExportToExcel_Click(object sender, EventArgs e) { this.ExportToExcel(grdBudget,"中国石油大港油田油管厂发料记录.xls");//grdBudget 是DataGrid的ID } |