前段时间做的mvc导出excel

老大说要进行优化,我原来导出是用npoi插件进行导出,格式是将数据放入到datatable中,然后进行导出。

说要优化的时候就想着将datatable数据导出格式改为list集合进行导出效率会好一点

所以就将所有datatable 改为list集合

用datatable 有一个缺点是我在excel显示中的顺序是跟我返回的实体定义的属性的顺序一样的,这样就有点局限性了,想要excel中改变显示顺序就要修改实体中属性的顺序

首先创建excel文件  new hssfworkbook();

创建sheet1  book.createsheet("")

创建row   sheet1.createrow(0)

最后给row赋值  row.createcell(0).setcellvalue("")

  //创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
string strdate = DateTime.Now.ToString("yyyyMMddHHmmss");//获取当前时间 if ((orders != null && orders.Count > ) || (bookingorders != null && bookingorders.Count > ))
{
#region sheet1本地数据
//添加一个sheet1 本地的数据导出为excel
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("本地数据");
//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow();
if (request.OrderType == "") //挂号
{
row1.CreateCell().SetCellValue("患者ID");
row1.CreateCell().SetCellValue("医院流水号"); //ReturnHisOrderId
row1.CreateCell().SetCellValue("公众服务平台订单号"); //BookOrderId
row1.CreateCell().SetCellValue("支付平台流水号"); // PayOrderId
row1.CreateCell().SetCellValue("退款流水号"); //BookOrderId
//row1.CreateCell(6).SetCellValue("支付平台代码"); //AgtCode
row1.CreateCell().SetCellValue("支付方式"); //paysource
row1.CreateCell().SetCellValue("支付时间"); //PayTime
row1.CreateCell().SetCellValue("支付金额");
row1.CreateCell().SetCellValue("就诊卡号");
row1.CreateCell().SetCellValue("科室");
row1.CreateCell().SetCellValue("医生");
row1.CreateCell().SetCellValue("就诊费用");
row1.CreateCell().SetCellValue("建议就诊时间");
row1.CreateCell().SetCellValue("出诊身份");
row1.CreateCell().SetCellValue("退费");
row1.CreateCell().SetCellValue("退款时间");
for (int i = ; i < bookingorders.Count; i++)
{
NPOI.SS.UserModel.IRow row2 = sheet1.CreateRow(i + );
row2.CreateCell().SetCellValue(bookingorders[i].PatId);
row2.CreateCell().SetCellValue(bookingorders[i].RtnHisOrderId);
row2.CreateCell().SetCellValue(bookingorders[i].BKOrderId);
row2.CreateCell().SetCellValue(bookingorders[i].PayOrderId);
row2.CreateCell().SetCellValue(bookingorders[i].RtnOrderId);
row2.CreateCell().SetCellValue(bookingorders[i].PaySource);
row2.CreateCell().SetCellValue(bookingorders[i].PayTime.ToString());
row2.CreateCell().SetCellValue(bookingorders[i].PayFee.ToString());
row2.CreateCell().SetCellValue(bookingorders[i].VisitingCard);
row2.CreateCell().SetCellValue(bookingorders[i].DeptName);
row2.CreateCell().SetCellValue(bookingorders[i].DoctorName);
row2.CreateCell().SetCellValue(bookingorders[i].ClinicFee.ToString());
row2.CreateCell().SetCellValue(bookingorders[i].AdviceTime);
row2.CreateCell().SetCellValue(bookingorders[i].ClincName);
row2.CreateCell().SetCellValue(bookingorders[i].RtnFee.ToString());
row2.CreateCell().SetCellValue(bookingorders[i].ReturnTime.ToString());
} //将数据逐步写入sheet1各个行
}
else if (request.OrderType == "") //门诊
{
row1.CreateCell().SetCellValue("患者ID");
row1.CreateCell().SetCellValue("医院流水号"); //ReturnHisOrderId
row1.CreateCell().SetCellValue("公众服务平台订单号"); //BookOrderId
row1.CreateCell().SetCellValue("支付平台流水号"); // PayOrderId
row1.CreateCell().SetCellValue("退款账号"); //BookOrderId
row1.CreateCell().SetCellValue("时间"); //paysource
row1.CreateCell().SetCellValue("金额"); //BookOrderId
for (int i = ; i < orders.Count; i++)
{
NPOI.SS.UserModel.IRow row2 = sheet1.CreateRow(i + );
row2.CreateCell().SetCellValue(orders[i].PatientID);
row2.CreateCell().SetCellValue(orders[i].HISReceiptSn);
row2.CreateCell().SetCellValue(orders[i].HisOrderId);
row2.CreateCell().SetCellValue(orders[i].TransactionId);
row2.CreateCell().SetCellValue(orders[i].OutTradeNo);
row2.CreateCell().SetCellValue(orders[i].PayTime.ToString());
row2.CreateCell().SetCellValue(orders[i].HisPayFee);
}
}

mvc导出excel 之 新的更多相关文章

  1. Mvc 导出 Excel

    Mvc 导出 Excel 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望 ...

  2. ASP.NET MVC导出excel

    ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...

  3. MVC 导出Excel 的其中一方法(View导出excel)

    场景:mvc下导出excel 思路:使用View导出excel 步骤: 1.导出标签添加事件 $("#export_A").click(function(){ //省略代码.... ...

  4. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  5. 三层+MVC导出Excel(2)

    背景: 出门在外,一切以健康为主,学习为辅,健康搞好了,学习也不能拉下,在外工作期间,我们在做数据导出的时候,自己封了一个类,利用NPOI进行数据导出Excel,自我感觉良好,特给大家分享一下,希望对 ...

  6. MVC导出Excel,提供下载Excel

    类1: using System.Collections.Generic;using System.Data;using System.Web.Mvc;using System.IO;using Sy ...

  7. MVC学习笔记---MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  8. spring mvc 导出 excel

    // js 触发导出 excel 方法 导出当前页的数据 含有条件查询的结果 // js 框架使用的 是 easyui function doExport(){ var optins = $(&quo ...

  9. mvc导出EXCEL

    /// <summary> /// 导出EXCEL /// </summary> /// <returns></returns> public Acti ...

随机推荐

  1. MR21、MR22和CK24的区别

      MR21和CK24都是用于修改物料标准价,但两者功能和用法上有所区别:MR21是直接更改单价, CK24是在CK11N或CK40N价格评估的基础上的价格核发, CK24记录价格评估, 价格评估在做 ...

  2. Java_I/O输入输出_实现当用户输入姓名和密码时,将每一个姓名和密码加在文件中,如果用户输入done,就结束程序。

    import java.io.*; public class Example { static final int lineLength = 81; public static void main(S ...

  3. 如何在VISIO 2010/2013 中关闭Shape protection(图形保护)

    最近在画UML图,用到MS visio 2010, 在使用一些网络查找到的图形的时候发现无法编辑,在网上找了找,翻译了下. Visio 2013 的图形保护功能,可以锁定图形的某些特定属性,使其无法被 ...

  4. 采购信息记录修改[BDC]

    *&---------------------------------------------------------------------* *& *&---------- ...

  5. 原生js通过prottype写的一个简单拖拽

    <!DOCTYPE html> <head> <meta charset="utf-8"/> <title></title&g ...

  6. 制作简单的2D物理引擎(一)——动力学基础

    一切的基础 点 在二维平面中,点$P$就是坐标$(x,y)$,点集就是一系列坐标的集合$\{P_1,P_2,...,P_n\}$,不过这个集合是有序的(顺时针). 向量 加减运算 $$\vec{P}\ ...

  7. [转+整理] Android 分辨率,密度,像素单位说明

    Android支持下列所有单位: px(像素):屏幕上的一个点.不同设备显示效果相同,一般我们HVGA代表320×480像素,这个用的比较多.in(英寸):长度单位.mm(毫米):长度单位.pt(磅) ...

  8. [MISSAJJ原创] UITableViewCell移动及翻转出现的3D动画效果[58同城cell移动效果]

    2015-11-20 很喜欢在安静的状态, 听着音乐,敲着键盘, 和代码们浓情对话, 每一份代码的积累, 都让自己觉得很充实快乐!Y(^_^)Y. 看到58同城app的cell有动画移动出现的特效,很 ...

  9. Mac Mysql初始密码重置

    今天晚上mac更新后重装MySQL 安装完成后 启动服务,死活登录不了 提示1045错误.按照网上的资料对MySQL密码进行重置.记录步骤如下: 1.首先关闭MySQL服务 系统偏好设置->最下 ...

  10. LTE Air interface Channels-----http://www.rfwireless-world.com/Tutorials/LTE-logical-transport-physical-channels.html

    LTE technology works based on three channel types viz. logical channel,transport channel and physica ...