需求:

实现错误信息生成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[, ] = "姓名";
excel.Cells[, ] = "工号";
excel.Cells[, ] = "公司";
excel.Cells[, ] = "部门";
excel.Cells[, ] = "失败原因"; //把newdt当前页的数据保存在Excel中
for (int i = ; i < newdt.Rows.Count; i++)
{
excel.Cells[i + , ] = "'" + newdt.Rows[i]["Emp_Name"];
excel.Cells[i + , ] = "'" + newdt.Rows[i]["Emp_Code"];
excel.Cells[i + , ] = "'" + newdt.Rows[i]["CompanyName"];
excel.Cells[i + , ] = "'" + newdt.Rows[i]["DeptName"];
excel.Cells[i + , ] = "'" + 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[]; /* 工作表 */
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 = ; /* 文字大小 */
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 = ; /* 文字大小 */
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 = ; i < Colnum; i++)
{
cells[, i].PutValue(dt.Columns[i].ColumnName);
cells[, i].SetStyle(style2);
cells.SetRowHeight(, );
cells.SetColumnWidth(i, );
}
/* 生成数据行 */
for (int i = ; i < Rownum; i++)
{
for (int k = ; k < Colnum; k++)
{
cells[ + i, k].PutValue(dt.Rows[i][k].ToString());
cells[ + i, k].SetStyle(style3);
}
cells.SetRowHeight( + i, );
}
//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();
}

分享供大家学习、

通过Workbook类 生成Excel导出数据的更多相关文章

  1. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  2. Excel向数据库插入数据和数据库向Excel导出数据

    为了熟悉java里工作簿的相关知识点,所以找了“Excel向数据库插入数据和数据库向Excel导出数据”的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,my ...

  3. vue2 Excel导出数据 js-xlsx的使用

    vue2 Excel导出数据 js-xlsx的使用 https://www.jianshu.com/p/ea115a8e9107 小世界最温暖 关注 2018.11.19 16:08 字数 280 阅 ...

  4. 使用POI导出EXCEL工具类并解决导出数据量大的问题

    POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...

  5. extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据

    最近做的一个web项目使用的是extsj4 框架,需要一个导出excel功能,通过extjs4 自带的导出方法实现.在前台生成excel的代码,form提交传递到后台输出.前台grid数据超过1000 ...

  6. JAVA实现Excel导出数据(以写好的Excel模版导出)

    工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...

  7. Java常用工具类之Excel导出

    package com.wazn.learn.util; import java.util.List; import java.util.Map; import org.apache.poi.hssf ...

  8. Excel导出数据Excel.Application组件权限设置方法

    很多网络应用系统都会涉及到数据采用Excel方式导出的模块,部分朋友问我到底怎么弄,其实方式很多种,目前比较优秀的方式还是直接用Excel的Excel.Application方式比较合适. 采用Exc ...

  9. asp.net 生成 excel导出保存时, 解决迅雷下载aspx页面问题

    网络上搜索,一大堆废话,以下为简单的导出生成Excel代码: string excelFile = Server.MapPath("~/SB/UpFile/20151104111008/Bo ...

随机推荐

  1. HW6.8

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  2. Treap 模板 poj1442&hdu4557

    原理可以看hihocoder上面的讲解,很清楚,不多说了. 模板抄lrj训练指南上面的. /** Treap 实现 名次树 功能: 1.找到排名为k的元素 2.值为x的元素的名次 初始化:Node* ...

  3. 二叉搜索树算法详解与Java实现

    二叉查找树可以递归地定义如下,二叉查找树或者是空二叉树,或者是满足下列性质的二叉树: (1)若它的左子树不为空,则其左子树上任意结点的关键字的值都小于根结点关键字的值. (2)若它的右子树不为空,则其 ...

  4. WebApi Json格式化

    两种转换方式: 1.全局设定,针对GlobalConfiguration.Configuration.Formatters.JsonFormatter做设定,位于Global.asax 如: var ...

  5. SQL2008--SQL语句-存储过程-触发器-事务处理-基本语法-函数

    环境 SQL2008 1.存储过程建立 库-可编程性-存储过程-右击“存储过程”-点击“新建存储过程” SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCRE ...

  6. SAP PP 生产订单变更记录保存

    *&---------------------------------------------------------------------* *& 包括 ZXCO1U01 *&am ...

  7. XMIND

    XMind 是一款非常实用的商业思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用.高效的可视化思维软件,强调软件的可扩展.跨平台.稳定性和性能,致力于使用先进的软件技术帮助 ...

  8. js防刷新的倒计时

    近期在维护考试系统,在进行考试測试时无意中点击了刷新button.可是上面的倒计时并没有受到影响.同一时候在几篇博客中也有这种样例,所以我想看看它究竟是如何防止刷新的. 假设是用cs代码写.我们可能会 ...

  9. Codeforces Round #321 (Div. 2) B. Kefa and Company 二分

    B. Kefa and Company Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/580/pr ...

  10. Android在线更新 远程安装程序

    原文:http://blog.csdn.net/jasper_success/article/details/7984065 第一步:使用java.net的URLConnection对象来创建连接 第 ...