NPOI操作

1.操作Excel

  准备生成的公共方法(将数据源DataTable转换成MemoryStream)

 1         /// <summary>
 2         /// 生成Excel
 3         /// </summary>
 4         /// <param name="table">DataTable</param>
 5         /// <returns>MemoryStream</returns>
 6         public static MemoryStream BuildToExcel(DataTable table)
 7         {
 8             MemoryStream ms = new MemoryStream();
 9
10             using (table)
11             {
12                 using (IWorkbook workbook = new HSSFWorkbook())
13                 {
14                     using (ISheet sheet = workbook.CreateSheet())
15                     {
16                         IRow headerRow = sheet.CreateRow(0);
17
18                         // handling header.
19                         foreach (DataColumn column in table.Columns)
20                         {
21                             headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
22                         }
23
24                         // handling value.
25                         int rowIndex = 1;
26
27                         foreach (DataRow row in table.Rows)
28                         {
29                             IRow dataRow = sheet.CreateRow(rowIndex);
30
31                             foreach (DataColumn column in table.Columns)
32                             {
33                                 dataRow.CreateCell(column.Ordinal, CellType.STRING).SetCellValue(row[column].ToString());
34                             }
35
36                             rowIndex++;
37                         }
38
39                         AutoSizeColumns(sheet);
40                         workbook.Write(ms);
41                         ms.Flush();
42                         ms.Position = 0;
43                     }
44                 }
45             }
46
47             return ms;
48         }

MVC导出

 1         /// <summary>
 2         /// 下载excel文件
 3         /// </summary>
 4         /// <param name="fileName">文件名称</param>
 5         /// <param name="dataTable">数据源</param>
 6         /// <returns>FileResult</returns>
 7         private FileResult DownloadExcel(string fileName, DataTable dataTable)
 8         {
 9             MemoryStream stream = WalletComm.BuildToExcel(dataTable);
10             stream.Seek(0, SeekOrigin.Begin);
11             return File(stream, "application/vnd.ms-excel", fileName);
12         }

2.操作CSV

  准备生成的公共方法(将数据源DataTable转换成MemoryStream)

 1         /// <summary>
 2         /// 生成CSV
 3         /// </summary>
 4         /// <param name="table">DataTable</param>
 5         /// <returns>MemoryStream</returns>
 6         public static MemoryStream BuildToCsv(DataTable table)
 7         {
 8             Encoding encode = Encoding.GetEncoding("gb2312");
 9             StringBuilder str = new StringBuilder();
10             if (table != null && table.Columns.Count > 0 && table.Rows.Count > 0)
11             {
12                 for (int i = 0; i < table.Columns.Count; i++)
13                 {
14                     str.Append(table.Columns[i].ColumnName.Replace("\"", "\"\""));
15                     if (i < table.Columns.Count - 1)
16                     {
17                         str.Append(",");
18                     }
19                 }
20
21                 foreach (DataRow item in table.Rows)
22                 {
23                     str.Append("\r\n");
24                     for (int i = 0; i < table.Columns.Count; i++)
25                     {
26                         if (item[i] != null)
27                         {
28                             str.Append("‘").Append(item[i].ToString().Replace("\"", "\"\""));
29                         }
30
31                         if (i < table.Columns.Count - 1)
32                         {
33                             str.Append(",");
34                         }
35                     }
36                 }
37             }
38
39             MemoryStream stream = new MemoryStream(encode.GetBytes(str.ToString()));
40             return stream;
41         }

  MVC导出

 1         /// <summary>
 2         /// 下载csv文件
 3         /// </summary>
 4         /// <param name="fileName">文件名称</param>
 5         /// <param name="dataTable">数据源</param>
 6         /// <returns>FileResult</returns>
 7         private FileResult DownloadCsv(string fileName, DataTable dataTable)
 8         {
 9             MemoryStream stream = WalletComm.BuildToCsv(dataTable);
10             stream.Seek(0, SeekOrigin.Begin);
11             return File(stream, "text/comma-separated-values", fileName);
12         }

  NOPI下载

时间: 2024-10-23 03:44:59

NPOI操作的相关文章

NPOI操作Excel 003:写入空Excel

对于NPOI操作Excel前面已经有了简单认识(http://blog.csdn.net/yysyangyangyangshan/article/details/42614209).继续来看如何将内容保存至Excel中.根据前面的经验NPOI操作Excel主要的几个对象分别是:workbook,sheet以及sheet内的row和cell.所以保存至Excel也是对这几个对象进行操作.当然我们平时使用Excel时不光要在单元格中保存内容,还要设置单元格的格式以及字体大小等,也就是格式和样式.这些

NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

> 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们解析数据入库的功能实现. 那么,这就涉及到一个问题:我们可以读出excel的表头,但是怎么知道每个表头具体对应数据库里面的字段呢? 博主经过一段时间的思考与构思,想到一法:现在的情况是我们有excel表A,对应数据库表B,但是A与B具体属性字段的映射关系我们不知.那我们是不是可以有一个A到B的映射文件C呢? 我想,说到这,大家就很明了了... 第一步:为每张excel创建一个与

数据字典生成工具之旅(4):NPOI操作EXECL

这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的几乎没有吧) 2:EXECL读写完毕后EXECL还有进程还留在后台  ,内存回收不了 基于以上的原因,就采用了开源组件NPOI进行操作了. 阅读目录 NPOI简介 简单示例 NPOI在本工具的使用及总结 工具源代码下载 学习使用 回到顶部 NPOI简介 1.Excel表格叫做工作表:WorkBook

Npoi操作excel

转载地址:http://www.cnblogs.com/knowledgesea/archive/2012/11/16/2772547.html Npoi操作excel Npoi 简介 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.co

用NPOI操作EXCEL-锁定列CreateFreezePane()

public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkbook(); string random = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100); string fileName = HttpUtility.UrlEncode("sheet"

C#用NPOI操作读写2007版的excel所走的弯路

C#用NPOI操作读写类网上很多了,在此不重复. 我引用的dll:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll, 一样的代码操作2003版的excel没有问题,在操作2007版的excel时出现莫名其妙的问题,而且catch不到异常信息. 解决方法:需引用ICSharpCode.SharpZipLib.dll. So需要引用的dll,有四个:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode

NPOI操作EXCEL--设置密码及设置只读

有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完成,如下图:      那么,在NPOI中有没有办法通过编码的方式达到这一效果呢?答案是肯定的. HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); HSSFRow row1 = sheet1.CreateRow(0);HSSFCell cel1 = row1.CreateCell(0);HS

C#开发中使用Npoi操作excel实例代码

C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.com

通过NPOI操作Excel

最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region excel文件属性 //作者 public string Author { get; set; } //标题 public string Title { get; set; } //主题 public string Subject { get; set; } //标记 public string Keyw

使用 WeihanLi.Npoi 操作 CSV

使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用,微软的 ml.net 的示例项目 用来训练模型的数据也是使用的 csv 来保存的,最近又发现使用 jmeter 来测试网站的性能,也可以用 csv 来参数化请求,csv 文件操作的重要性由此可见. 此前做了一个 NPOI 的扩展 WeihanLi.Npoi,支持.net45 以及 .netstan