使用NPOI写入Excel数据(ASP.NET)
第一次做这个写入数据的功能,研究了下npoi的类
IWorkbook wb = new HSSFWorkbook();
//创建表
ISheet sh = wb.CreateSheet("XXX");
//设置单元的宽度
sh.SetColumnWidth(, * );
#region 合并单元格
IRow row0 = sh.CreateRow();
row0.Height = * ;
ICell icell1top0 = row0.CreateCell();
icell1top0.CellStyle = Getcellstyle(wb, stylexls.头);
icell1top0.SetCellValue(getTitle());
#endregion
#region 创建问题题目
IRow row1 = sh.CreateRow();
// row1.Height = 20 * 20;
ICell icell = null;
ICell icell1top = row1.CreateCell();
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 > )
{
for (int j = ; j < dtAll.Rows.Count; j++)
{
sh.SetColumnWidth(j + , * );
//合并单元格//表头
//CellRangeAddress()该方法的参数次序是:开始行号,结束行号,开始列号,结束列号。
sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(, , , dtAll.Rows.Count));
string title = dtAll.Rows[j]["T_title"].ToString();
icell = row1.CreateCell(j + );
icell.SetCellValue(title);
}
}
#endregion
#region 创建对应题目的答案内容
DataTable dtUser = getUserInfo();
IRow row11 = null;
for (int a = ; a < dtUser.Rows.Count; a++)//学生
{
row11 = sh.CreateRow(a + );
string user = dtUser.Rows[a]["realname"].ToString();
string id = dtUser.Rows[a]["id"].ToString();
for (int b = ; b < dtAll.Rows.Count; b++)//题目
{
//每一行的第一列//用户姓名
HSSFCell cell11 = row11.CreateCell() as HSSFCell;
cell11.SetCellValue(user);
DataTable dtInfo = getAnwer(id);
if (dtInfo != null && dtInfo.Rows.Count > )
{
for (int i = ; 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 + ) as HSSFCell;
cell1.SetCellValue(title);
}
}
}
}
#endregion
#region 下载Excel
Random r = new Random();
string _fileName = string.Format("{0:yyyyMMddHHmmssfff}-{1}", DateTime.Now, r.Next(, )) + ".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
效果:
使用NPOI写入Excel数据(ASP.NET)的更多相关文章
- 使用NPOI读取Excel数据到DataTable
如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...
- C#中NPOI操作excel之读取和写入excel数据
一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...
- 使用NPOI读取Excel数据并写入SQLite
首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格 ...
- 读取Excel文件的两种方法比较 以及用NPOI写入Excel
1. 采用NPOI方式,只需引用NPOI.dll,但目前最高只能到2.4.0版. 缺点:只支持.xls,不支持.xlsx格式.github上的2.4.1版支持.xlsx,但总提示缺ICSharpCod ...
- 读取、写入excel数据
在实际项目中,不可避免的会操作excel表格.一直以来都是读取excel表格,可今天为了写入excel表格,可是煞费苦心,终于完成,记录下来以便后续使用. 1.读取excel表格的数据 读取excel ...
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格
首先来建立一个新的Excel文档,在桌面上点击右键,选择[新建]-[Excel工作表],命名为[新手学员]. 现在这个新Excel文档是空白的,我们接下来会通过按键精灵的脚本来打开并写入一些数据.打开 ...
- 【xlwings1】多线程写入excel数据
#!/ufr/bin/env python # -*- coding:utf-8 -*- import xlwings as xw import queue import threading impo ...
- NPOI 导出Excel 数据方式
使用NPOI的库进行Excel导出操作 公共帮助类: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using S ...
- 基于NPOI的Excel数据导入
从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...
随机推荐
- MySQL之乱码问题解决详解
今天在写一个项目的时候,在数据库中手动插入数据不会产生中文乱码,但是通过javaWeb却出现乱码,把提交表单和响应中的乱码问题解决后,还是乱码.所以我锁定一定是我的mysql数据库中出现了乱码的现象.
- 【Harmony】概述
原文来自本人的微信公众号文章 系统工程实验室 引言 基于模型的系统工程(简称MBSE,英文全称Model based System Engineering )的实践至少需要三个维度的支撑 ...
- 徒手用Java来写个Web服务器和框架吧<第三章:Service的实现和注册>
徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response> 这一章先把Web框架的功能说 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证
上一篇:Window Azure ServiceBus Messaging消息队列技术系列2-编程SDK入门 http://www.cnblogs.com/tianqing/p/5944573.ht ...
- CentOs下安装PHP环境的步骤
前言 在CentOs环境下安装php开发环境,需要首先安装一些源文件,然后使用yum命令直接安装即可,在Fedora 20 源中已经有了PHP的源,直接可以使用以下命令安装即可: # yum inst ...
- 1113: [Poi2008]海报PLA
1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 765 Solved: 466[Submit][Status ...
- android开发艺术探索读书笔记之-------view的事件分发机制
View的点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个过程就是分发过程. 分发过程主要由以下 ...
- Visual Studio 2015创建ASP.NET5项目“DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' 无法安装的错误
使用asp.net5建立web application时遇到DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装的错误 解决办法: 运行cmd: 1.输入: @pow ...
- eclipse项目导入到android studio中文乱码处理
由于eclipse项目是gbk编码,Android studio默认用的是utf-8. 就会导致代码中的汉字,注释全部显示为乱码. 解决方法:在module的bulid.gradle中加入: comp ...
- PRINCE2考试一共多少道题
一.Foundation 基础级: 考试时长 1 个小时: 75 道单选题,其中 5 道随机测试题,无论对错都不计入考分:满分 70 分,获得 35 分才能通过考试,正确率 50%: 全程闭卷考试 二 ...