1.操作Excel

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

         /// <summary>
/// 生成Excel
/// </summary>
/// <param name="table">DataTable</param>
/// <returns>MemoryStream</returns>
public static MemoryStream BuildToExcel(DataTable table)
{
MemoryStream ms = new MemoryStream(); using (table)
{
using (IWorkbook workbook = new HSSFWorkbook())
{
using (ISheet sheet = workbook.CreateSheet())
{
IRow headerRow = sheet.CreateRow(); // handling header.
foreach (DataColumn column in table.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
} // handling value.
int rowIndex = ; foreach (DataRow row in table.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex); foreach (DataColumn column in table.Columns)
{
dataRow.CreateCell(column.Ordinal, CellType.STRING).SetCellValue(row[column].ToString());
} rowIndex++;
} AutoSizeColumns(sheet);
workbook.Write(ms);
ms.Flush();
ms.Position = ;
}
}
} return ms;
}

MVC导出

         /// <summary>
/// 下载excel文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <param name="dataTable">数据源</param>
/// <returns>FileResult</returns>
private FileResult DownloadExcel(string fileName, DataTable dataTable)
{
MemoryStream stream = WalletComm.BuildToExcel(dataTable);
stream.Seek(, SeekOrigin.Begin);
return File(stream, "application/vnd.ms-excel", fileName);
}

2.操作CSV

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

         /// <summary>
/// 生成CSV
/// </summary>
/// <param name="table">DataTable</param>
/// <returns>MemoryStream</returns>
public static MemoryStream BuildToCsv(DataTable table)
{
Encoding encode = Encoding.GetEncoding("gb2312");
StringBuilder str = new StringBuilder();
if (table != null && table.Columns.Count > && table.Rows.Count > )
{
for (int i = ; i < table.Columns.Count; i++)
{
str.Append(table.Columns[i].ColumnName.Replace("\"", "\"\""));
if (i < table.Columns.Count - )
{
str.Append(",");
}
} foreach (DataRow item in table.Rows)
{
str.Append("\r\n");
for (int i = ; i < table.Columns.Count; i++)
{
if (item[i] != null)
{
str.Append("'").Append(item[i].ToString().Replace("\"", "\"\""));
} if (i < table.Columns.Count - )
{
str.Append(",");
}
}
}
} MemoryStream stream = new MemoryStream(encode.GetBytes(str.ToString()));
return stream;
}

  MVC导出

         /// <summary>
/// 下载csv文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <param name="dataTable">数据源</param>
/// <returns>FileResult</returns>
private FileResult DownloadCsv(string fileName, DataTable dataTable)
{
MemoryStream stream = WalletComm.BuildToCsv(dataTable);
stream.Seek(, SeekOrigin.Begin);
return File(stream, "text/comma-separated-values", fileName);
}

  NOPI下载

NPOI操作的更多相关文章

  1. NPOI操作EXCEL(四)——反射机制批量导出excel文件

    前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...

  2. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

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

    这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的 ...

  4. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

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

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  6. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...

  7. 使用 WeihanLi.Npoi 操作 CSV

    使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用 ...

  8. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

  9. NPOI操作之一EXCEL数据导入数据库

    一.概要 前面讲到NPOI操作EXCEL导出功能,下面讲下从EXCEL里获取数据添加进数据库. 二.代码 HSSFWorkbook hssfworkbook; public void ExcelDat ...

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

    public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkboo ...

随机推荐

  1. Hive的安装与配置

    1.因为我使用MySQL做为Hive的元数据库,所以先安装MySQL. 参考:http://www.cnblogs.com/hunttown/p/5452205.html 登录命令:mysql -h主 ...

  2. 浅谈Java中的==和equals

    引言 最近在看TIJ,看到==和equals相关内容,今天就来简单的总结下. 关系操作符== 书中对关系操作符的描述是这样的:"关系操作符生成的是一个boolean结果,它们计算的是操作数的 ...

  3. Twitter OA prepare: K-complementary pair

    2sum的夹逼算法,需要sort一下.本身不难,但是tricky的地方在于允许同一个数组元素自己跟自己组成一个pair,比如上例中的[5, 5].而且数组本身就允许值相等的元素存在,在计算pair时, ...

  4. java 事件通告写法

    使用场景: 自己模块发生变化后可能引起其他模块变化的部分,需要添加事件通告,通知其他模块. 使用模式: 观察者模式 (以User类为例)写法: 1.创建接口: public interface IUs ...

  5. PTA 团体程序设计天梯赛 L3-020 至多删三个字符

    $f[i][j]$表示到第$i$个字符,已经删去了$j$个字符的方案数. 显然的转移: $f[i][j] = f[i - 1][j] + f[i - 1][j - 1]$ 但是这样会有重复,我们考虑什 ...

  6. Java设计模式应用——桥接模式

    性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用. 采集可以是snmp采集,也可以是ems采集:汇聚可以使storm汇聚,也可以是spark汇聚:入库可以是hdfs入库,也 ...

  7. ORA-00980: 同义词转换不再有效

    客户账号TB在操作软件时,报错:“[Microsoft][ODBC driver for Oracle][Oracle]ORA-00980: 同义词转换不再有效”. 使用拥有dba权限的账号sys的登 ...

  8. IEEE发布2017年编程语言排行榜:Python高居首位,java第三,php第八

    2017年7月18日,IEEE Spectrum 发布了第四届顶级编程语言交互排行榜.因为有各种不同语言的排行,所以 IEEE Spectrum 依据不同的变量对流行度进行了排行.据 IEEE Spe ...

  9. javashop组件开发指南

    javashop组件开发指南 1.      概念解释 组件:可以理解为是插件,功能点的一个集合. 插件:是指具体的某个功能. 插件桩:是负责调用插件. 事件:是要决定什么时候执行插件 一个组件是由多 ...

  10. C/C++之Memcpy and memmove

    memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中. 但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开 ...