NPOI生成excel并下载

NPIO文件下载地址:http://npoi.codeplex.com/

将文件直接引用至项目中即可,,,,,

虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单的例子,希望自己在以后的项目中用得着,到时候就不用在网上查找了,直接把代码copy过来就可以啦~~~~主要是在mvc控制器里面敲的,直接贴代码了。。。。。

1、逻辑代码

 public EmptyResult ExportExcle()
        {
            HSSFCellStyle style;
            HSSFFont font;
#if DEBUG
            UserInfo u = new UserInfo();
            List<UserInfo> list = u.GetDate();
            string url = Server.MapPath(@"\Content\File\MyBook.xls");
            string sheetName = "MySheet";
#endif
            HSSFWorkbook hssfworkbook = new HSSFWorkbook();
            FileStream filecreate = new FileStream(url, FileMode.Create, FileAccess.ReadWrite);
            //创建工作表
            HSSFSheet sheet = hssfworkbook.CreateSheet(sheetName) as HSSFSheet;
            IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("用户编号");
            row.CreateCell(1).SetCellValue("用户名");
            row.CreateCell(2).SetCellValue("性别");
            row.CreateCell(3).SetCellValue("年龄");
            row.CreateCell(4).SetCellValue("电话");
            row.CreateCell(5).SetCellValue("身份证");
            //行高
            row.HeightInPoints = 20;
            //给表头单元格设置样式(对齐方式、边框、字体、背景颜色)
            List<ICell> cell = row.Cells;
            style = hssfworkbook.CreateCellStyle() as HSSFCellStyle;
            font = hssfworkbook.CreateFont() as HSSFFont;
            font.IsBold = true;//加粗
            font.FontName = "宋体";
            font.Color = HSSFColor.Red.Index;//字体颜色
            style.SetFont(font);
            this.CellStyle(style, sheet);
            style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Green.Index;
            style.FillPattern = FillPattern.SolidForeground;
            cell.ForEach(delegate(ICell c)
            {
                c.CellStyle = style;
            });

            //加载内容
            if (list.Any())
            {
                style = hssfworkbook.CreateCellStyle() as HSSFCellStyle;
                this.CellStyle(style, sheet);
                for (int i = 0; i < list.Count; i++)
                {
                    row = sheet.CreateRow(i + 1);
                    row.HeightInPoints = 20;
                    row.CreateCell(0).SetCellValue(list[i].UserId);
                    row.CreateCell(1).SetCellValue(list[i].UserName);
                    row.CreateCell(2).SetCellValue(list[i].Sex);
                    row.CreateCell(3).SetCellValue(list[i].Age);
                    row.CreateCell(4).SetCellValue(list[i].Tel);
                    row.CreateCell(5).SetCellValue(list[i].IdCard);
                    cell = row.Cells;
                    cell.ForEach(p => p.CellStyle = style);
                }
            }
            //将流写入excel文件
            hssfworkbook.Write(filecreate);
            filecreate.Close();

            #region 下载文件
            FileStream fileopen = new FileStream(url, FileMode.Open);
            byte[] bytes = new byte[(int)fileopen.Length];
            fileopen.Read(bytes, 0, bytes.Length);
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("MyBook.xls", System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            fileopen.Close();
            Response.Flush();
            Response.End();
            return new EmptyResult();
            #endregion
        }

2、单元格样式

        /// <summary>
        /// 样式
        /// </summary>
        /// <param name="style"></param>
        /// <param name="sheet"></param>
        private void CellStyle(HSSFCellStyle style, HSSFSheet sheet)
        {
            //自动换行
            style.WrapText = true;
            //边框
            style.BorderBottom = BorderStyle.Thin;
            style.BorderLeft = BorderStyle.Thin;
            style.BorderRight = BorderStyle.Thin;
            style.BorderTop = BorderStyle.Thin;
            //对齐方式
            style.Alignment = HorizontalAlignment.Center;
            style.VerticalAlignment = VerticalAlignment.Center;
            //设置第四列、第五列的宽度
            sheet.SetColumnWidth(4, 20 * 256);
            sheet.SetColumnWidth(5, 30 * 256);
        }

3、数据源

private class UserInfo
        {
            public int UserId { get; set; }
            public string UserName { get; set; }
            public string Sex { get; set; }
            public int Age { get; set; }
            public string Tel { get; set; }
            public string IdCard { get; set; }

            public List<UserInfo> GetDate()
            {
                List<UserInfo> list = new List<UserInfo>()
                {
                 new UserInfo{UserId=1,UserName="张三",Sex="男",Age=20,Tel="18217722343",IdCard="150726198810235436"},
                 new UserInfo{UserId=2,UserName="李四",Sex="女",Age=23,Tel="18217722343",IdCard="150726198810235436"},
                 new UserInfo{UserId=3,UserName="王五",Sex="男",Age=21,Tel="18217722343",IdCard="150726198810235436"},
                 new UserInfo{UserId=4,UserName="赵六",Sex="女",Age=30,Tel="18217722343",IdCard="150726198810235436"},
                 new UserInfo{UserId=5,UserName="钱七",Sex="男",Age=45,Tel="18217722343",IdCard="150726198810235436"},
                 new UserInfo{UserId=6,UserName="张三",Sex="女",Age=18,Tel="18217722343",IdCard="150726198810235436"}
                };
                return list;
            }
        }

4、前端代码

之前遇到了一个问题,因为刚开始我使用的是Ajax方式提交的,所以在浏览器上无法看到下载提示框,最后搞了半天,原来是因为提交方式不对,换成location就可以了。

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnExportExcle").click(function () {
                //var options = {
                //    type: ‘get‘,
                //    cache: false,
                //    async:false,
                //    url: ‘/Index/ExportExcle‘,
                //    success: function (data) {
                //    }
                //};
                //$.ajax(options);
                location = "/Index/ExportExcle";
            });
        });
    </script>
</head>
<body>
    <input type="button" value="导出Excel" id="btnExportExcle" />
</body>
</html>

5、前台页面效果

6、打开Excel

好了,就介绍到这里了,希望对大家也有所帮助~~~~

时间: 2024-10-28 21:04:16

NPOI生成excel并下载的相关文章

通过 NPOI 生成 Excel

HSSFWorkbook hssfworkbook; ISheet sheet1; public void BuildExcel() { hssfworkbook = new HSSFWorkbook(); // 新建一个Excel页签 sheet1 = hssfworkbook.CreateSheet("Sheet1"); // 创建新增行 for (var i = 0; i < 10;i++ ) { IRow row1 = sheet1.CreateRow(i); for (

使用node.js生成excel报表下载(excel-export express篇)

引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种com组件贴心使用. nodejs作为一门新的语言,报表功能也不是十分完善. (1).js-xlsx : 目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格XLSX / XLSM / XLSB / XLS / CSV,解析采用纯js实现,写入需要依赖nodejs

使用NPOI生成Excel级联列表

目录 1    概要    1 2    磨刀不误砍柴工——先学会Excel中的操作    2 3    利用NPOI生成导入模板    7 3.1    设置workbook&sheet    8 3.2    生成数据Sheet,并按规则列好    8 3.3    添加名称,并指定数据范围(绑定数据源)    9 3.4    写入大类和小类的数据验证    11 概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.另外Word发博代码格式显示凌乱,因此相关代码均使用图片替代

NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 3.设置单元格样式:字段,颜色 4.设置单元格为下拉框并限制输入值 5.设置单元格只能输入数字 // // GET: /Excel/ public ActionResult Write() { var workbook = new HSSFWorkbook();//从流内容创建Workbook对象

Aspose.Cell和NPOI生成Excel文件2

NPOI还是比较好用的,引用dll程序集即可 1创建workbook和工作流 HSSFWorkbook workbook = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); 2这里是一个多sheet的例子,可以通过循环一个个生成 1 List<DataTable> listtable = new List<DataTable>(); 2 for(int t = 1; t < = listtable.Count

NPOI 生成 excel基本设置

//设置页眉页脚 tempSheet.Header.Center = "2017-04-27"; tempSheet.Footer.Center = "√" + "  正常  " + "×" + "  故障  " + "○" + "  其他  "; //设置单元格边线ICellStyle style = wb1.CreateCellStyle();style.Bord

NPOI 生成Excel

private void btnSave_Click(object sender, EventArgs e)        {            if (string.IsNullOrEmpty(txt_FilePath.Text) || txt_FilePath.Text.Trim().Substring(txt_FilePath.Text.Trim().Length - 4) != ".xls")            {                MessageBox.S

记一次服务器生成Excel在客户端下载的案例

今天加盟部校长说做一个用户数据收集并导出Excel文件的小网页,主要便于查看客户信息,前期一切顺利,就在生成Excel和下载的时候出现了问题,收集了一些资料,有人说用NPOI插件,这个可行,我在网上收集了资料,没有使用插件做了一个简单的Excel生成器,话不多少代码如下: 首先在服务类中 //导出Excel        /// <summary>        /// DataTable导出到Excel        /// </summary>        /// <p

.NET NPOI导出Excel详解

NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, doc, ppt等. 官方网站:http://npoi.codeplex.com/ nuget直接获取使用 一.NPOI生成Excel //创建工作薄 var workbook = new HSSFWorkbook(); //创建表 var table = workbook.CreateSheet(