导出excel-NPOI
前台调用:
view: <a href='/Admin/NurseUser/Excel' target='_blank'>导出Excel</a>
或
js: window.location = "/Controller/Excel";
后台代码(控制器):
public FileResult Excel(){
//第一步:(1)以虚拟表的形式获取要导出的数据
DataTable dt_0 = this.Service.Excel();
//第一步:(2)若字段复杂,新建虚拟表并设置栏位
DataTable dt_1 = new DataTable();
DataColumn field = null;
field = new DataColumn("标题一"); dt_1.Columns.Add(field);
//第一步:(3)构建字典,用于字段的渲染
Dictionary<string, string> dic= new Dictionary<string, string>();
if(dic.ContainsKey("键")){//true
dic.Add("键","值");
}
//第一步:(4)遍历dt_0,处理数据插入dt_1
foreach (DataRow row in dt_0.Rows){
DataRow dataRow_1 = dt_1.NewRow();
if (row.ItemArray[3] != null) {
if (dic.ContainsKey(row.ItemArray[3].ToString())){
dataRow_1[0] = dic[row.ItemArray[3].ToString()];
}
} dt_1.Rows.Add(dataRow_1);
}
//第二步:创建excel工作簿、工作表
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
//第三步:工作表添加栏位
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
row1.CreateCell(0).SetCellValue("标题一");
row1.CreateCell(1).SetCellValue("标题二");
//第四步:工作表填充数据
for(int i = 0;i<dt_1.Rows.Count;i++){
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++){
rowtemp.CreateCell(j - 1).SetCellValue(dt.Rows[i][j].ToString());
}
}
//第六步:写入客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", "用户信息.xls");
}
注意:此代码须在控制器里,在dao层 return File中的File会被当作变量处理,导致报错,其本质是一个类型。
导出excel-NPOI的更多相关文章
- ASP.NET MVC导出excel npoi
使用npoi组件 前端代码: @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", ne ...
- MVC 实现表格数据导出Excel(NPOI方式)
前端View(@ViewBag为查询条件): <span id="exprobtn" class="btn_blue" style="dispa ...
- NPOI导出Excel
using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- NPOI、MyXls、Aspose.Cells 导入导出Excel(转)
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...
- (C#)使用NPOI导出Excel
在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...
- Npoi导出Excel 实战篇(Webform)
开篇语 废话不多说,直接上遇到的问题 需求:在这个界面点击导出,导出页面数据,苦于没有做过webfrom项目,弄了半天还是没想到原生态的好方法,所以在网上看了下有没有导出的好例子,结果发现有人推荐使用 ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
随机推荐
- Mybatis内置的日志工厂提供日志功能
Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪个日志 ...
- SSH中一些典型的问题
struts2 1-1:为什么每次请求都要创建一个Action对象? 是出于对线程安全的考虑,每个request都不会相互影响 1-2:ModelDriven拦截器的配置中refreshModelBe ...
- 基本CSS布局二
基本CSS布局二------基本页面布局二 /*主面板样式*/ #container { width:100%; margin:0px auto;/*主面板DIV居中*/ } /*顶部面板样式*/ # ...
- laravel 先orderBY再groupby,导致分组后的排序不正确
//联系过我的经纪人 $appletChats=$this->AppletChat->orderBy('created_at','desc')->where([['user_id', ...
- 改变HTML样式
HTML DOM 允许 JavaScript 改变 HTML 元素的样式.如何改变 HTML 元素的样式呢? 语法: Object.style.property=new style; 注意:Objec ...
- ubuntu安装相关
安装系统参考:http://xinzhi.wenda.so.com/a/1523530837610141 首先进行更新源 sudo apt-get update 安装codeblocks sudo a ...
- openerp学习笔记 单据自动编号(编码规则)
说明: 单据自动编码允许定义 单据前缀+按当前年.月.日.时.分.秒+流水号+单据后缀 单据自动编号允许按所有公司统一编号或按分公司单独编号 单据自动编号中的流水号部分未按月重新编号,不断累计,当超出 ...
- 自定义组合控件SettingItemView的简单实现
package com.loaderman.settingitemviewdemo; import android.os.Bundle; import android.support.v7.app.A ...
- 数据库开源框架之sqlcipher加密数据库
访问github链接:https://github.com/sqlcipher/android-database-sqlcipher 访问 http://sqlcipher.net/sqlcipher ...
- SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
问题描述: 已经安装了android-sdk 和gradle环境,并配置了环境变量,如下所示: android环境 root@wangju-HP--G4:/home/wangju/Desktop/5i ...