前段时间做的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. Excel数据批量导入到数据库

    1.今天做批量导入网上找了个例子,改了改,运行起来了.用POI实现Excel的读取,需要jar包. 2.ReadExcel.java读取数据 /** * */ package com.b510.exc ...

  2. Leetcode--Merge Two Sorted Lists

    static ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *temp = ); ListNode *head = te ...

  3. 并列统计CASE WHEN

    select sum(case when depart = 'Physical' then 1 else 0 end) PhyTotal, sum(case when depart = 'Chemis ...

  4. HTML 或 CSS 文件中引用的图片文件移动到任意位置

    对于一个套接字的输入操作,第一步通常涉及等待数据从网络到达,当所等待分组到达时,被复制到内核的某个缓冲区: 第二步就是把数据从内核缓冲区复制到应用进程缓冲区.通过 Session 的 createQu ...

  5. Windows 2003 EE升级服务错误号:0x8DDD0018 解决办法

    错误提示: [错误号: 0x8DDD0018] 此站点无法继续,因为这些 Windows 服务中的一个或多个没有运行: “自动更新”功能(允许站点查找.下载和安装适用于您的计算机的高优先级更新程序) ...

  6. 在APACHE服务器上的访问方式上去除index.php

      在APACHE服务器上的访问方式上去除index.php   下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index ...

  7. Java集合类学习笔记(各种Map实现类的性能分析)

    HashMap和Hashtable的实现机制几乎一样,但由于Hashtable是一个古老的.线程安全的集合,因此HashMap通常比Hashtable要快. TreeMap比HashMap和Hasht ...

  8. μC/OS-Ⅲ系统的任务切换和任务调度

    一.任务切换 在操作系统中当任务需要从一个任务切换到另外一个任务时,要将当前任务的现场保存到当前任务的堆栈中(当前任务现场主要指CPU相关寄存器),然后回复新任务的现场并执行新任务.这个叫做上下文切换 ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  10. C# Request中修改header信息

    var headers = app.Context.Request.Headers; Type hdr = headers.GetType(); PropertyInfo ro = hdr.GetPr ...