NPOI生成不规则Excel表格(并以流的形式下载,不将文件保存在服务器上,直接在客户端导出excel)
//下载NPOI类库并添加引用
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.SS.Util;
public static void MergeCell(ISheet tb, ICell cl, int firstrow, int lastrow, int firstcol, int lastcol, string name)
{
tb.AddMergedRegion(new CellRangeAddress(firstrow, lastrow, firstcol, lastcol));
cl.SetCellValue(name);
} public static ICellStyle SetCellStyle(IWorkbook wk, int number)
{
ICellStyle cellStyle = wk.CreateCellStyle();
if (number == )//标题栏不设置边框样式
{
//对齐
cellStyle.VerticalAlignment = VerticalAlignment.CENTER;
cellStyle.Alignment = HorizontalAlignment.CENTER;
//自动换行
cellStyle.WrapText = true;
}
else
{
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
//对齐
cellStyle.VerticalAlignment = VerticalAlignment.CENTER;
cellStyle.Alignment = HorizontalAlignment.CENTER;
//自动换行
cellStyle.WrapText = true;
}
return cellStyle;
}
public static string ExportDLAnalyse2Excel(string excleTitle,string area)
{
string[] dlDataArr = area.Split(',');
int rowlength = dlDataArr.Length / ;//数据表格的行数
//创建工作薄
HSSFWorkbook wk = new HSSFWorkbook();
//创建一个名称为Sheet1的表
ISheet tb = wk.CreateSheet();
wk.SetSheetName(, "Sheet1");
for (int i = ; i < rowlength+; i++)
{
ICellStyle cellStyle = SetCellStyle(wk, i);
IRow row = tb.CreateRow(i);
for (int j = ; j < ; j++)//数据表格的列数
{
ICell cell = row.CreateCell(j);
cell.CellStyle = cellStyle;
} } MergeCell(tb, tb.GetRow().GetCell(), , , , , excleTitle);//设置excel标题
MergeCell(tb, tb.GetRow().GetCell(), , , , , "编码");//设置表格标题栏
MergeCell(tb, tb.GetRow().GetCell(), , , , , "名称");
MergeCell(tb, tb.GetRow().GetCell(), , , , , "面积(/公顷)"); int rownum = ;
for (int i = ; i < dlDataArr.Length; i+=)
{
MergeCell(tb, tb.GetRow(rownum).GetCell(), rownum, rownum, , , dlDataArr[i]);
MergeCell(tb, tb.GetRow(rownum).GetCell(), rownum, rownum, , , dlDataArr[i + ]);
MergeCell(tb, tb.GetRow(rownum).GetCell(), rownum, rownum, , , dlDataArr[i + ]);
rownum++;
} MemoryStream mstream = new MemoryStream();
wk.Write(mstream);
DownloadFile(mstream, excleTitle, "xls");
return null;
}
/// <summary>
/// 从服务器下载Excel到客户端
/// </summary>
/// <param name="fs"></param>
/// <param name="filename"></param>
/// <returns></returns>
public static string DownloadFile(MemoryStream fs, string filename,string extenname)
{
string fileName = filename + "."+extenname;//客户端保存的文件名 //以字符流的形式下载文件
byte[] bytes = fs.ToArray();
fs.Read(bytes, , bytes.Length);
fs.Close();
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary");
System.Web.HttpContext.Current.Response.BinaryWrite(bytes);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
return null;
}
NPOI生成不规则Excel表格(并以流的形式下载,不将文件保存在服务器上,直接在客户端导出excel)的更多相关文章
- OAF_文件系列10_实现OAF将数据资料导出Excel到本地JXL(案例)
20150729 Created By BaoXinjian
- .NET 客户端上传本地excel文件到服务器上,并在客户端显示
// 上传按钮 protected void btnUp_Click(object sender, EventArgs e) { bool b = Upload(fuExcel); // 上传exce ...
- Java生成二进制文件与Postman以二进制流的形式发送请求
业务描述: 模拟终端(智能家居)发送HTTP POST请求,请求参数为二进制流:而且,二进制流是加密后的数据,因此调试分两步: 1.Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是 ...
- WCF系列_WCF影响客户端导出Excel文件的实现
需求:WCF搭建服务端提供导出并下载Excel文件接口,客户端使用ajax发起请求,浏览器直接下载Excel文件. 难点:WCF中并没有HttpContext对象,因此,服务端总是获取不到HttpCo ...
- java压缩下载图片并以zip流的形式下载到客户端
/** * * @param page * @param rows * @param works * @return * @author ffwwzz 下载zip * @throws IOExcept ...
- 【laravel】【转发】laravel 导入导出excel文档
1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和 导出 ...
- PHP的laravel框架后台实现数据导出excel的功能
要想在PHP后台实现excel导入导出功能,一种简单有效的方法就是使用phpexcel插件. 要使用phpexcel插件,首先需要下载composer,这个工具是专门用来管理项目中库之间的依赖关系的. ...
- npoi生成excel流并在客户端下载(html+后台 )
//前端页面 <body> <input type="button" value="导出Excel" class="button&q ...
- Npoi导入导出Excel操作
之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...
随机推荐
- windows下git库的ssh连接,使用public key的方法
在windows下进行项目开发,使用git,通过ssh方式与git库连接,而ssh方式用public key实现连接. 首先需要下载mygit,安装后使用git bash.git bash(有GUI界 ...
- FFmpeg深入分析(一)
最近在做一个关于监控的项目,要在iphone 客户端实现播放监控的实时视频以及录像视频.使用到了FFmpeg,看到这篇文章,写的非常不错.转自:http://blog.chinaunix.net/ui ...
- OC:打僵尸问题(类的问题)
1.定义普通僵尸类: 实例变量:僵尸种类.僵尸总血量.僵尸每次失血量. 方法:初始化方法(设置僵尸种类,总血量).被打击失血.死亡. 2.定义路障僵尸类: 实例变量:僵尸种类.僵尸总血量.僵尸每次失血 ...
- VS2012 发布网站步骤
VS2012中发布网站的方式与以往有了不同,前面的版本发布如图 而2012点publish的时候弹出框有所不同,这边需要新建一个profile名字随便起,发布的方式有好几种, 当然不同的方式配置不同, ...
- ORACLE DB TRIGGER详解
本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...
- 最新的App上架教程Object-C
准备 开发者账号 完工的项目 上架步骤 一.创建App ID 二.创建证书请求文件 (CSR文件) 三.创建发布证书 (CER) 四.创建Provisioning Profiles配置文件 (PP文件 ...
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
栈解旋(unwinding) 异常被抛出后,从进入try块起,到异常被抛掷前,这期间在栈上的构造的所有对象,都会被自动析构.析构的顺序与构造的顺序相反.这一过程称为栈的解旋(unwinding). d ...
- 【翻译】EXTJS 编码风格指南与实例
原文:EXTJS Code Style Guide with examples Ext JS风格指南: 熟知的且易于学习 快速开发,易于调试,轻松部署 组织良好.可扩展和可维护 Ext JS应用程序的 ...
- Android虚拟机 USB转串口调试方法
有时候需要在虚拟机调试串口,首先安装串口的驱动程序(不知道的话可以用驱动精灵),然后打开设备管理器找到驱动,查看驱动使用的端口(比如COM3),虚拟机需要在命令行启动: 将SDK下的tools文件夹加 ...
- /etc/fstab文件分析(第二版)
/etc/fstab文件分析 前面说新建的分区在系统重启之后就会失效,要想永久生效,需要将其写入/etc/fstab文件 一./etc/fstab文件格式:6个组成部分 物理分区名/卷标 挂载点 文件 ...