利用npoi导出Excel
npoi库是当下最流行的处理Excel、Word、PPT等Office文件格式
/// <summary>
/// 线下活动商品模型
/// </summary>
public class OffLineCart
{
/// <summary>
///
/// </summary>
public OffLineCart()
{
}
/// <summary>
/// 商品Id
/// </summary>
public string ProductId { get; set; }
/// <summary>
/// SKUId
/// </summary>
public string SkuId { get; set; }
/// <summary>
/// 商品现价
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 商品数量
/// </summary>
public int Qty { get; set; }
}
/// <summary>
/// 线下活动提交订单集合
/// </summary>
public class OffLineOrderListModel
{
public OffLineOrderListModel()
{
}
/// <summary>
/// 子订单集合
/// </summary>
public IList<OffLineCart> OffLineCartList { get; set; }
/// <summary>
/// 子订单集合总价
/// </summary>
public decimal TotalPrice {
get
{
if (OffLineCartList.Count > 0)
{
var totalprice = OffLineCartList.Sum(q => q.Price * q.Qty);
return totalprice;
}
return 0;
}
}
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 地推码
/// </summary>
public string Code { get; set; }
/// <summary>
/// 收货地址
/// </summary>
public string Address { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 导出对应的订单集合
/// </summary>
/// <param name="offLineOrderListModelList"></param>
/// <param name="strHeaderText">表头文本</param>
public static MemoryStream DataTableToExcel(List<OffLineOrderListModel> offLineOrderListModelList , string strHeaderText)
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();
//excel总共有11列
string[] columnarr = new string[]
{
"收货人姓名",
"收货人手机",
"收货人邮箱",
"收货人地址",
"销售人员编码",
"订单号",
"订单生成时间",
"地推版本号", //订单商品拆分,其余的订单信息单元格合并
"订单商品Id",
"订单商品SKUId",
"订单商品数量",
"订单商品单价", "订单总价"
};
HSSFRow firstRow = (HSSFRow)sheet.CreateRow(0);
firstRow.Height = 25*25;
//头标颜色标识
for (int i = 0; i < columnarr.Length; i++)
{
firstRow.CreateCell(i).CellStyle = GetCellStyle(workbook);
firstRow.CreateCell(i).SetCellValue(columnarr[i]);
} #region 设置各列的宽度 sheet.SetColumnWidth(0, 15 * 256);
sheet.SetColumnWidth(1, 15 * 256);
sheet.SetColumnWidth(2, 25 * 256);
sheet.SetColumnWidth(3, 30 * 256);
sheet.SetColumnWidth(4, 15 * 256);
sheet.SetColumnWidth(5, 25 * 256);
sheet.SetColumnWidth(6, 25 * 256);
sheet.SetColumnWidth(7, 25 * 256);
sheet.SetColumnWidth(8, 35 * 256);
sheet.SetColumnWidth(9, 35 * 256);
sheet.SetColumnWidth(10, 15 * 256);
sheet.SetColumnWidth(11, 15 * 256);
sheet.SetColumnWidth(12, 15 * 256); #endregion int rowIndex = 1;
foreach (OffLineOrderListModel offLineOrderListModel in offLineOrderListModelList)
{
foreach (var offLineCart in offLineOrderListModel.OffLineCartList)
{
int col = 0; HSSFRow aotherRow = (HSSFRow)sheet.CreateRow(rowIndex);
aotherRow.Height = 22*22;
aotherRow.CreateCell(col).SetCellValue(offLineOrderListModel.Name);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.Phone);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.Email);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.Address);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.Code);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.OrderNo);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.Version);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineCart.ProductId);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineCart.SkuId);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineCart.Qty);
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineCart.Price.ToString("N"));
col++;
sheet.GetRow(rowIndex).CreateCell(col).SetCellValue(offLineOrderListModel.TotalPrice.ToString("N"));
rowIndex++; }
//合并订单基本信息单元格
//要合并的单元格
string[] mergedCellStringArr = new[]
{
"收货人姓名",
"收货人手机",
"收货人邮箱",
"收货人地址",
"销售人员编码",
"订单号",
"订单生成时间",
"地推版本号"
};
for (int i = 0; i < mergedCellStringArr.Length; i++)
{ Region region = new Region(rowIndex-offLineOrderListModel.OffLineCartList.Count, i, rowIndex-1, i);
sheet.AddMergedRegion(region);
}
//合并订单总价单元格
sheet.AddMergedRegion(new Region(rowIndex - offLineOrderListModel.OffLineCartList.Count, columnarr.Length-1, rowIndex - 1, columnarr.Length-1)); }
using (MemoryStream ms = new MemoryStream())
{
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
//为什么会无法释放呢
//sheet.Dispose();
//workbook.Dispose();
workbook = null;
return ms;
}
}


利用npoi导出Excel的更多相关文章
- C#利用NPOI导出Excel类(简单版)
代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...
- DateTable利用NPOI导出Excel 公共方法
protected void Export_Excel(DataTable dt) { string filename = "学生基本信息.xls"; ) { filename = ...
- NPOI导出Excel(含有超过65335的处理情况)
NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...
- 在服务端C#如何利用NPOI构建Excel模板
目前本人接触过两种模板导出的方式:(1)C#利用NPOI接口制作Excel模板,在服务端用数据渲染模板(2)在前端利用前人搭建好的框架,利用office编写xml制作模板,在客户端进行数据的渲染,导出 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- NPOI导出EXCEL 打印设置分页及打印标题
在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置 sheet1.FitToPage = false; 而 ...
- .NET NPOI导出Excel详解
NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...
- 利用Servlet导出Excel
-----因为Excel可以打开HTML文件,因此可以利用页面的Form表单把页面中的table内容提交给Servlet,然后后台把提交上来的table内容转换成文件流的形式,并以下载的形式转给客户端 ...
随机推荐
- 开机自动执行脚本 与 update-rc.d
http://coderbee.net/index.php/linux/20130524/141 update-rc.d script_name defaultsupdate-rc.d s ...
- WebBrowser处理AJAX生成的网页内容!
WebBrowser处理AJAX生成的网页内容! 等待网页执行完毕(AJAX执行后). 使用webBrowser1.Document.Body.OuterHtml可以获取到AJAX产生的网页内容.
- Python多线程、进程入门1
进程是资源的一个集合, 1.一个应用程序,可以有多进程和多线程 2.默认一个程序是单进程单线程 IO操作使用多线程提高并发 计算操作使用多进程提高并发 进程与线程区别 1.线程共享内存空间,进程的内存 ...
- ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
mysql安全机制的问题 解决: mysql -P 3306 -h host -u account --secure_auth=off -pmysql -P 端口号 -h 主机地址 -u 账号 --s ...
- Hibernate5.2之一对一主键关联(四)
Hibernate5.2之一对一主键关联(四) 一.简介 一对一关联关系分为两种:a.主键关联:b. ...
- AVD Manager
启动AVD Manager会弹出下面的窗口: 然后点击右侧的Create来新建一个模拟器,创建一个模拟器,取名Phone,然后选择设备屏幕尺寸,SDK的大小. 创建完成后,选中刚刚创建的模拟器,然后点 ...
- Linux 忘记root密码 的解决办法
以单用户维护模式登录 先将系统重启, 在读秒时按下任意键进入菜单界面,再仔细看菜单下的说明,按下e就能进入grub的编辑模式,如下 将光标移动到kernel那行, 再次按e进入kernel的编辑界面中 ...
- Android基础之Activity四种启动模式
这东西是最基础的,发现自己其实没有真正试过,好好研究研究 standard :默认, singleTop :大体上同standard,但是当该Activity实例已经在task栈顶,不再创建新的实例, ...
- (2016 年) githup 博客地址 : https://github.com/JMWY/MyBlog
githup 博客地址 : https://github.com/JMWY/MyBlog
- Java cookie和session介绍与区别
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...