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. switch语句语法

    switch  case语句适用于从一组互斥的分支中选择一个执行分支. int day = 0;switch (day) { : dayName = "Sunday"; break ...

  2. 提示'HTTP消息不可读'

    1.提示下面的错误信息 2.修改后的代码,费用接口 import unittest import requests import json import HTMLTestRunner ur1 = 'h ...

  3. java数据结构经典问题

    A:栈抽象数据类型 1.栈的主要操作 void push(int data);将data数据插入栈中. int pop();删除并返回最后一个插入栈的元素. 2.栈的辅助操作 int top();返回 ...

  4. mysql表结构文件

  5. rpgmakermv插件(1)screenfull.js与Fullscreen.js

    本文分析游戏的全屏化处理. 引入:玩家在不同情景下可能会选择全屏游戏或窗口化游戏,所以作为开发者,应该在设置中加入全屏与否的选项. 两种插件:screenfull.js与Fullscreen.js 1 ...

  6. zw版【转发·台湾nvp系列Delphi例程】HALCON ConvolImage

    zw版[转发·台湾nvp系列Delphi例程]HALCON ConvolImage procedure TForm1.Button1Click(Sender: TObject);begin img.D ...

  7. python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典

    python的函数中,有时会有类似*args,**keys这样的参数,代表的是可变参数,一个*表示元祖,两个*表示字典,就是说这个函数可以接受任何类型的参数,都不会报错,有些函数为了提高可用性,会加这 ...

  8. RHEL6.4 字符模式下安装图形界面图文教程

    本文转自:http://www.cnblogs.com/wahsonleung/p/3230325.html 第1步:当然就是启动redhat,设置映像文件. 第2步:命令行输入yum groupin ...

  9. Ubuntu系统下Jenkins的git构建基本方法

    上一博文讲到了本地脚本的构建方法. 本篇博文主要讲“Ubuntu系统下Jenkins的git构建基本方法”. 点击保存后即可完成简单的构建. 构建触发器 这个触发器是决定什么时候触发构建,可以设置为定 ...

  10. 教你如何在linux下查看服务是否已经启动或者关闭

    1. # ps aux | grep 服务名称(ps 的参数是可以颠倒使用没问题) 2. # netstat -tunple | grep 服务端口 3.bind() 80 in using 代表的含 ...