通过Workbook类 生成Excel导出数据
2015-03-27 12:16
351 查看
需求:
实现错误信息生成Excel保存到本地让用户查看。
刚开始使用了微软自带的Microsoft.Office.Interop.Excel类库、
虽然功能实现了、但是由于服务器上没有安装Excel、无法调用COM+组件。
并且COM+组件 听说如果导出过程中出问题可能导致服务器宕机。
经过查阅,修改为调用Aspose.Cells组件。
分享供大家学习、
实现错误信息生成Excel保存到本地让用户查看。
刚开始使用了微软自带的Microsoft.Office.Interop.Excel类库、
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = true; //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错 excel.Application.Workbooks.Add(true); //生成Excel中列头名称 excel.Cells[1, 1] = "姓名"; excel.Cells[1, 2] = "工号"; excel.Cells[1, 3] = "公司"; excel.Cells[1, 4] = "部门"; excel.Cells[1, 5] = "失败原因"; //把newdt当前页的数据保存在Excel中 for (int i = 0; i < newdt.Rows.Count; i++) { excel.Cells[i + 2, 1] = "'" + newdt.Rows[i]["Emp_Name"]; excel.Cells[i + 2, 2] = "'" + newdt.Rows[i]["Emp_Code"]; excel.Cells[i + 2, 3] = "'" + newdt.Rows[i]["CompanyName"]; excel.Cells[i + 2, 4] = "'" + newdt.Rows[i]["DeptName"]; excel.Cells[i + 2, 5] = "'" + newdt.Rows[i]["Error"]; } //设置禁止弹出保存和覆盖的询问提示框 excel.DisplayAlerts = false; excel.AlertBeforeOverwriting = false; //保存工作簿 excel.Application.Workbooks.Add(true).Save(); //保存excel文件 excel.Save("D:" + "\\错误信息.xls"); //确保Excel进程关闭 excel.Quit(); excel = null;
虽然功能实现了、但是由于服务器上没有安装Excel、无法调用COM+组件。
并且COM+组件 听说如果导出过程中出问题可能导致服务器宕机。
经过查阅,修改为调用Aspose.Cells组件。
/// <summary> /// 导出数据到本地 /// </summary> /// <param name="dt">要导出的数据</param> /// <param name="Name">标题</param> /// <param name="path">保存路径</param> public void OutFileToDisk(DataTable dt, string Name, string path) { Workbook workbook = new Workbook(); /* 工作簿 */ Worksheet sheet = workbook.Worksheets[0]; /* 工作表 */ Cells cells = sheet.Cells; /* 单元格 //为标题设置样式 */ Style styleTitle = workbook.Styles[workbook.Styles.Add()]; /* 新增样式 */ Style style2 = workbook.Styles[workbook.Styles.Add()]; /* 新增样式 */ style2.HorizontalAlignment = TextAlignmentType.Center; /* 文字居中 */ style2.Font.Name = "宋体"; /* 文字字体 */ style2.Font.Size = 12; /* 文字大小 */ style2.Font.IsBold = true; /* 粗体 */ style2.IsTextWrapped = true; /* 单元格内容自动换行 */ style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; /* 样式3 */ Style style3 = workbook.Styles[workbook.Styles.Add()]; /* 新增样式 */ style3.HorizontalAlignment = TextAlignmentType.Center; /* 文字居中 */ style3.Font.Name = "宋体"; /* 文字字体 */ style3.Font.Size = 10; /* 文字大小 */ style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; int Colnum = dt.Columns.Count; /* 表格列数 */ int Rownum = dt.Rows.Count; /* 生成行2 列名行 */ for (int i = 0; i < Colnum; i++) { cells[0, i].PutValue(dt.Columns[i].ColumnName); cells[0, i].SetStyle(style2); cells.SetRowHeight(0, 20); cells.SetColumnWidth(i, 20); } /* 生成数据行 */ for (int i = 0; i < Rownum; i++) { for (int k = 0; k < Colnum; k++) { cells[1 + i, k].PutValue(dt.Rows[i][k].ToString()); cells[1 + i, k].SetStyle(style3); } cells.SetRowHeight(1 + i, 18); } //workbook.Save(path);//可以通过Save直接存储 MemoryStream ms = workbook.SaveToStream(); byte[] bt = ms.ToArray(); string fileName = Name + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";//客户端保存的文件名 //以字符流的形式下载文件 Response.ContentType = "application/vnd.ms-excel"; //通知浏览器下载文件而不是打开 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bt); Response.Flush(); Response.End(); }
分享供大家学习、
相关文章推荐
- navicat 导出向导 , 通过Excel生成批量SQL语句,处理大量数据
- Asscess 通过DataTable写入数据到Excel现有模板 ,流文件导出
- 通过SMExportToExcel控件导出DBGrid、DBGridEh里的数据
- C#也能动态生成Word文档并填充数据, 导出EXCEL 方法
- 导出数据到EXCEL并生成多个Sheet
- 通过Excel自带的查询分析器快速完成从SQL Server中导出数据的例子(通用类)
- 利用js生成读取页面数据并导出为excel
- C#通过OLEDB导出大数据到Excel
- 从数据库导出数据生成word或excel文档
- 【POI】导出excel文件,不生成中间文件,直接将内存中的数据创建对象下载到浏览器
- 通过Excel自带的查询分析器快速完成从SQL Server中导出数据的例子(通用类)
- Sql Server通过BCP数据导出Excel
- 导出数据生成Excel(MVC)
- 通过给定的表名导出所有数据生成xml文件
- 通过Excel自带的查询分析器快速完成从SQL Server中导出数据的例子(通用类)
- 通过OLE将ListView数据导出到Excel
- 使用poi通过excel模板导出excel数据
- oms数据通过excel模板导出excel文件,同时可在excel模板中添加计算公式
- phpexcel导出数据库数据生成excel文件
- Python实现导出数据生成excel报表的方法示例