C#导出excel

方式一,AppLibrary.WriteExcel.XlsDocument:

  所用的库及库源码为:AppLibrary.WriteExcel.XlsDocument,这种方式默认是以excel2003的方式输出(即使机子上只安装office2010),而excel2003最多允许65536行,适合输出比较小的数据量.例如:

 1 /// <summary>
 2     /// 通过"AppLibrary.WriteExcel.XlsDocument",以.xls方式输出.
 3     /// </summary>
 4     public void WriteAsXLS() {
 5         AppLibrary.WriteExcel.XlsDocument doc = new AppLibrary.WriteExcel.XlsDocument();
 6         doc.FileName = "Report.xls";
 7
 8         //获得数据库前30条记录.
 9         var data = GetTopRecords(30).ToArray<t_review>();
10         const int sheetMaxRecord = 10;  //每个sheet最多的行数.
11         int curRow = 2; //开始游标.
12
13         int sheetNum = 1;   //sheet序号.
14         AppLibrary.WriteExcel.Worksheet sheet = null;
15
16         for (int s = 0; s < data.Length; s++) {
17             if (s % sheetMaxRecord == 0) {
18                 sheet = doc.Workbook.Worksheets.Add("sheet-" + sheetNum++);
19                 AddHead(sheet);
20
21                 curRow = 2;
22             }
23             AppLibrary.WriteExcel.Cells cells = sheet.Cells;
24
25             cells.Add(curRow, 1, data[s].votes);
26             cells.Add(curRow, 2, data[s].user_id);
27             cells.Add(curRow, 3, data[s].review_id);
28             cells.Add(curRow, 4, data[s].stars);
29             cells.Add(curRow, 5, data[s].date);
30             cells.Add(curRow, 6, data[s].text);
31             cells.Add(curRow, 7, data[s].type);
32             cells.Add(curRow, 8, data[s].business_id);
33
34             curRow++;
35         }
36         doc.Send();
37         Response.Flush();
38         Response.End();
39     }

获得记录的GetTopRecords方法为:

1 IQueryable<t_review> GetTopRecords(int topNum) {
2         ReviewDataContext re = new ReviewDataContext();
3         return (from r in re.t_reviews
4                 select r).Take<t_review>(topNum);
5     }

通过这种方式,处理大型数据的时候,容易抛出 System.OutOfMemoryException 异常,例如,我的数据库量为 一百多万条,就不能使用这种方式,即使产生多个sheet,例如:

 1 public void WriteAsXLS() {
 2         AppLibrary.WriteExcel.XlsDocument doc = new AppLibrary.WriteExcel.XlsDocument();
 3         doc.FileName = "Report.xls";
 4
 5         ReviewDataContext re = new ReviewDataContext();
 6         var data = from r in re.t_reviews
 7                    select r;
 8         const int sheetMaxRecord = 60000;   //每个sheet最多的行数.
 9         int curRecord = 0; //实际记录号.
10         int curRow = 2; //当前待写入sheet中的行号.
11
12         int sheetNum = 1;   //sheet序号.
13         AppLibrary.WriteExcel.Worksheet sheet = null;
14
15         foreach (var r in data) {
16             if (curRecord % sheetMaxRecord == 0) {
17                 sheet = doc.Workbook.Worksheets.Add("sheet-" + sheetNum++);
18                 AddHead(sheet);
19
20                 curRow = 2;
21             }
22             AppLibrary.WriteExcel.Cells cells = sheet.Cells;
23
24             cells.Add(curRow, 1, r.votes);
25             cells.Add(curRow, 2, r.user_id);
26             cells.Add(curRow, 3, r.review_id);
27             cells.Add(curRow, 4, r.stars);
28             cells.Add(curRow, 5, r.date);
29             cells.Add(curRow, 6, r.text);
30             cells.Add(curRow, 7, r.type);
31             cells.Add(curRow, 8, r.business_id);
32
33             curRecord++;
34         }
35         doc.Send();
36         Response.Flush();
37         Response.End();
38     }

 

时间: 2024-10-25 17:57:04

C#导出excel的相关文章

通用导出excel(可控制内容)

实体类 package util; import java.sql.Timestamp; public class Book { private int bookId; private String name; private String author; private float price; private String isbn; private String pubName; private Timestamp date; public Book() { } public Book(i

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

利用poi导出Excel

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Date;import java.util.ArrayList;import java.util.List; import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.

goalng导出excel(csv格式)

最近项目中有个小需求,需要将查询结果导出到excel.之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,看了下发现可以导出csv文件,大家都知道csv文件其实就是文本格式的excel文件,可以直接通过excel打开或是导入excel. 看起来挺好的,问题如愿解决,但是事实证明对已一个还不成熟的语言或是库最好还是先测一下的好.兴冲冲的卸了测试例子,成功导出了一个text.csv文件,一

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

导出excel 0kb的问题

运行导出代码,浏览器提示下载框,但是大小为0kb,跟踪代码执行情况,在这一行就结束了wb = new XSSFWorkbook( is );没有异常抛出.(可能是tomcat层面把异常处理了) 总之,找了半天问题,终于发现了,原来是jar包版本不一致造成的.看poi-ooxml-3.8的pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>

C#.Net 导出Excel 之单元格 相关设置

range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1", "E1");     //获取Excel多个单元格区域:本例做为Excel表头range.Merge(0);     //单元格合并动作worksheet.Cells[1, 1] = "Excel单元格赋值";     //Excel单元格赋值range

POI导出EXCEL经典实现

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

Java 导出Excel

比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel,现在以前一种为例子做一个讲解,后一个感兴趣的可以去自己查下资料,楼主也会贴出代码,但是!没有跑过,不保证成功率··· Jakarta POI 1.首先下载poi-3.6-20091214.jar,下载地址如下: 官方主页http://poi.apache.org/index.html API文档http://poi.apache.org/apidocs/index.html Maven 依赖: <

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo