使用NPOI写入Excel数据(ASP.NET)

第一次做这个写入数据的功能,研究了下npoi的类

       IWorkbook wb = new HSSFWorkbook();

        //创建表
        ISheet sh = wb.CreateSheet("XXX");
        //设置单元的宽度
        sh.SetColumnWidth(0, 20 * 256);

        #region 合并单元格

        IRow row0 = sh.CreateRow(0);
        row0.Height = 20 * 20;
        ICell icell1top0 = row0.CreateCell(0);
        icell1top0.CellStyle = Getcellstyle(wb, stylexls.头);
        icell1top0.SetCellValue(getTitle());

        #endregion

        #region 创建问题题目
        IRow row1 = sh.CreateRow(1);
        // row1.Height = 20 * 20;

        ICell icell = null;

        ICell icell1top = row1.CreateCell(0);
        icell1top.CellStyle = Getcellstyle(wb, stylexls.头);
        icell1top.SetCellValue("姓名/问卷题目");

        string sqlAll = "select * from dbo.CheckMgr where UserID=" + rqid + " order by T_Sort asc";
        DataTable dtAll = SystemDAL.SQLHelper.GetTable(sqlAll);
        if (dtAll != null && dtAll.Rows.Count > 0)
        {
            for (int j = 0; j < dtAll.Rows.Count; j++)
            {
                sh.SetColumnWidth(j + 1, 40 * 256);
                //合并单元格//表头               //CellRangeAddress()该方法的参数次序是:开始行号,结束行号,开始列号,结束列号。
                sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dtAll.Rows.Count));

                string title = dtAll.Rows[j]["T_title"].ToString();

                icell = row1.CreateCell(j + 1);
                icell.SetCellValue(title);
            }
        }
        #endregion

        #region 创建对应题目的答案内容
        DataTable dtUser = getUserInfo();
        IRow row11 = null;
        for (int a = 0; a < dtUser.Rows.Count; a++)//学生
        {
            row11 = sh.CreateRow(a + 2);
            string user = dtUser.Rows[a]["realname"].ToString();
            string id = dtUser.Rows[a]["id"].ToString();
            for (int b = 0; b < dtAll.Rows.Count; b++)//题目
            {

                //每一行的第一列//用户姓名
                HSSFCell cell11 = row11.CreateCell(0) as HSSFCell;
                cell11.SetCellValue(user);

                DataTable dtInfo = getAnwer(id);
                if (dtInfo != null && dtInfo.Rows.Count > 0)
                {
                    for (int i = 0; i < dtInfo.Rows.Count; i++)
                    {
                        string key = dtInfo.Rows[b]["Ckey"].ToString();
                        string value = dtInfo.Rows[b]["Cvalue"].ToString();
                        string title = getMgrTitle(key, value);
                        HSSFCell cell1 = row11.CreateCell(b + 1) as HSSFCell;
                        cell1.SetCellValue(title);
                    }
                }

            }
        }

        #endregion

        #region 下载Excel
        Random r = new Random();
        string _fileName = string.Format("{0:yyyyMMddHHmmssfff}-{1}", DateTime.Now, r.Next(1, 9999)) + ".xls";
        using (MemoryStream ms = new MemoryStream())
        {
            wb.Write(ms);
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachement;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.ASCII));
            Response.AppendHeader("Content-Length", ms.Length.ToString());
            Response.BinaryWrite(ms.GetBuffer());
            Response.Flush();
            Response.End();
        }
        #endregion

效果:

时间: 2024-08-30 01:56:53

使用NPOI写入Excel数据(ASP.NET)的相关文章

NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

> 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们解析数据入库的功能实现. 那么,这就涉及到一个问题:我们可以读出excel的表头,但是怎么知道每个表头具体对应数据库里面的字段呢? 博主经过一段时间的思考与构思,想到一法:现在的情况是我们有excel表A,对应数据库表B,但是A与B具体属性字段的映射关系我们不知.那我们是不是可以有一个A到B的映射文件C呢? 我想,说到这,大家就很明了了... 第一步:为每张excel创建一个与

使用NPOI读取Excel数据到DataTable

现在XML文件的存储格式大行其道,但是也不是适用于所有情况,很多单位的数据交换还是使用Excel的形式.这就使得我们需要读取Excel内的数据,加载到程序中进行处理.但是怎样有效率的读取,怎样使程序保持健壮,这需要很大的努力. 我们如果要写一个动态链接库会很花费时间和精力,这就使得开源项目是个很有效率的选择. 在各类关于Excel的开源项目中NPOI是中国的程序员发起的,他的一大好处是直接处理Ole文件,用户不必安装Office.现在发展到2.0还可以自动判断Excel文件版本,我们自己判断文件

读取、写入excel数据

在实际项目中,不可避免的会操作excel表格.一直以来都是读取excel表格,可今天为了写入excel表格,可是煞费苦心,终于完成,记录下来以便后续使用. 1.读取excel表格的数据 读取excel数据,然后导入到数据库中,根据常识,只要是能得到一个dataset,那所有的问题便迎刃而解了.下面将读取excel数据得到dataset: public DataSet ExecleDs(string filenameurl) { string strConn = "Provider=Microso

ASP.NET MVC使用NPOI读取excel数据

一.下载引用 目前官网不能直接下载到引用的dll,需要自己打包(我没有自己打包,我有现成的DLL,地址:https://files.cnblogs.com/files/dengxixi/NPOIdll.7z),即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2007版需要此dll). 二.创建MVC项目,页面代码: <html> <head> <meta name

使用NPOI读取Excel数据并写入SQLite

首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格里面写入一些数据,我这里只是Demo形式,可以根据自己的实际情况,稍作修改 然后开始建一个新的项目,我这里用的是WPF,你可以使用Core,Console,Winform都可以,我这里提供思路,仅供参考 然后引用一下图中的dll程序集,主要是SQLite和NPOI,你可以到Nuget去下载,Nuge

按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格

首先来建立一个新的Excel文档,在桌面上点击右键,选择[新建]-[Excel工作表],命名为[新手学员]. 现在这个新Excel文档是空白的,我们接下来会通过按键精灵的脚本来打开并写入一些数据.打开按键精灵软件,点击[新建],进入我的脚本界面,再点击进入[全部命令].在[全部命令]中选择[插件命令]-[office办公文档插件]-[打开Excel文档].在命令的下面可以看到命令的详细设置,点击[路径].在弹出窗口中选择[新手学员]的Excel文档,点击打开.可以在命令参数中看到引用的文档,点击

NPOI导入Excel数据

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text; namespace Common{ ///使用此代码需要添加NPOI的dll引用 public class Exc

基于NPOI的Excel数据导入

从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请移步:https://github.com/xuanbg/Utility 概述: 这个帮助类是一个泛型类,泛型参数对应的实体类还起到模板的作用.如果你的Excel文件使用与实体类不同的列标题的话,可以通过给属性加上Alias特性,将列标题和属性进行对应.例如: Excel格式如图: 实体类: 1 u

NPOI 导出excel数据超65535自动分表

工作上遇到的问题,网上找了一些资料 整理了一个比较可行的解决方案. NPOI 大数据量分多个sheet导出 代码段 /// <summary> /// DataTable转换成Excel文档流,并输出到客户端 /// </summary> /// <param name="table"></param> /// <param name="response"></param> /// <pa