使用npoi插件将excel文件导出
大致流程:前端使用URL地址的方式跳转到action后返回file类型数据
js:
window.location.href = '/Home/index?Id=' + id
后台代码:
/// <summary>
/// 导出对比结果
/// </summary>
/// <param name="quarter"></param>
/// <returns></returns>
public FileResult index(int Id)
{
try
{
var list = 可以根据传入参数查找到数据库中需要导出的数据列表 //创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//创建样式
var style = book.CreateCellStyle();
//单元格样式:水平对齐居中
style.Alignment = HorizontalAlignment.Center;
//字体样式
var font=book.CreateFont();
//加粗
font.Boldweight=short.MaxValue;
//字体样式加入到单元格样式里面
style.SetFont(font); //添加一个sheet
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
var titleCell = sheet1.AddMergedRegion(new CellRangeAddress(, , , ));
var row = sheet1.CreateRow();
row.CreateCell().SetCellValue("签到标题:" + title + " 反馈进度:" + feedBackProgress);
//标题的样式设置
row.CreateCell().CellStyle = style;
//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(); row1.CreateCell().SetCellValue("姓名");
row1.CreateCell().SetCellValue("性别");
row1.CreateCell().SetCellValue("年龄");
//将数据逐步写入sheet1各个行 for (int i = ; i < list.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
rowtemp.CreateCell().SetCellValue(list[i].name);
rowtemp.CreateCell().SetCellValue(list[i].sex);//如果是时间字段需要tostring确定格式,否则导出到数据库的时候会变成一个小数的数字
rowtemp.CreateCell().SetCellValue(list[i].age);
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", string.Format("你的excel-{0}.xls", DateTime.Now.ToString("yyyyMMddhhmmss")));
}
catch (Exception ex)
{
logger.Error(ex.Message + ex.StackTrace);
return null;
}
}
上述代码存在一个错误,就是导出的excel合并行的标题不见了,经过研究发现,要写成如下形式:
//添加一个sheet
ISheet sheet1 = book.CreateSheet("Sheet1");
sheet1.AddMergedRegion(new CellRangeAddress(, , , )); var row = sheet1.CreateRow();
//标题的样式设置
var titleRow = row.CreateCell();
//创建样式
var style = book.CreateCellStyle();
//单元格样式:水平对齐居中
style.Alignment = HorizontalAlignment.Center;
//字体样式
var font = book.CreateFont();
//加粗
font.Boldweight = short.MaxValue;
//字体样式加入到单元格样式里面
style.SetFont(font);
titleRow.CellStyle = style;
row.CreateCell().CellStyle = style;
titleRow.SetCellValue("签到标题:" + title + " 反馈进度:" + feedBackProgress);
这里首先是
row.CreateCell(0)在设置的时候要统一用一个变量去设置,第二点就是
titleRow.CellStyle = style;
row.CreateCell(0).CellStyle = style;
先设置样式。再设置值,如果顺序颠倒也会出现比如字体不对或者不显示的问题.
另外,合并单元格方法的四个参数解释如下:
//CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
使用npoi插件将excel文件导出的更多相关文章
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- 基于EPPlus和NPOI实现的Excel导入导出
基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...
- C# 使用 NPOI 库读写 Excel 文件
NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx.官网提供了一份 Examples,给出 ...
- php excel文件导出之phpExcel扩展库
php Excel 文件导出 phpExcel 官网 http://phpexcel.codeplex.com/ /** * 导出特定文件 * 依据详细情况而定 */ public function ...
- 使用NPOI插件读取excel模版修改数据后保存到新目录新文件中
添加引用: using System.IO; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel ...
- NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办
项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWork ...
- 根据NPOI 读取一个excel 文件的多个Sheet
大家都知道NPOI组件可以再你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有shee ...
- .Net NPOI 上传excel文件、提交后台获取excel里的数据
1.导入NPOI.dll 2.添加类NPOIExcel.cs using System; using System.Collections.Generic; using System.Text; us ...
- NPOI库读写Excel文件
//首先Nuget安装NPOI库using System; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using N ...
随机推荐
- resteay上传单个文件/多个文件到本地
代码如下: CADLocalControlle.java package com.xgt.controller; import com.xgt.common.BaseController; impor ...
- js 打印指定页面部分打印
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- Change - Why we need coding standards
Change - Why we need coding standards I have the idea of coding standards when I have to review my t ...
- pdf OCR
pdf转word等其他可排版编辑格式的软件: ABBYY Finereader: 老牌OCR软件了,支持各种文字.图片.表格的识别,效率比较高,中文的识别效果也很好,公式的转换效率较差. InftyR ...
- 生成自签名证书-开启https
1.生成CA证书 # 生成 CA 私钥 openssl genrsa -out ca.key 2048 # X.509 Certificate Signing Request (CSR) Manage ...
- zookeeper【6】负载均衡
负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力. 架构图 图中左侧为ZooKeeper集群,右侧上方为工作服务器,下面为客户端.每台工作服务器在启动时都会去zookee ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)(三)
九. 系统配置 1. 安装 LFS-Bootscripts-20150222 软件包包含一套在 LFS 系统启动和关闭时的启动和停止脚本. cd /sources tar -jxf lfs-boots ...
- 深入理解jQuery插件开发总结(四)
jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...
- 小白学flask之路由,反向路由,路由参数
# -*- coding: utf-8 -*- from flask import Flask, request, url_for app = Flask(__name__) @app.route(& ...
- JavaScript里面的居民们2-字符串
基于HTML,实现需求 按照HTML中按钮的描述以此实现功能 计算结果显示在 id 为 result 的 P 标签中 <!DOCTYPE html> <html> <he ...