实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作。DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的DataTable转化为Excel文件。实现关键代码如下:

  1. public void ToExcel(DataTable dt)
  2. {
  3. #region 3s
  4. var FilePath = @"D:\ToExcel\";//产生Excel文件路径
  5. DeleteFile(FilePath);
  6. //创建全新的Workbook
  7. var workbook = new HSSFWorkbook();//一個sheet最多65536行
  8. var count = ;
  9. for (double i = ; i < Convert.ToDouble(dt.Rows.Count) / Convert.ToDouble(); i++)//每个Excel文件的一个页签只能存放65536行数据
  10. {
  11. var row_index = ;
  12. //创建Sheet
  13. workbook.CreateSheet("Sheet" + i);
  14. //根据Sheet名字获得Sheet对象
  15. var sheet = workbook.GetSheet("Sheet" + i);
  16. IRow row;
  17. row = sheet.CreateRow(row_index);
  18.  
  19. //写入标题
  20. for (int j = ; j < dt.Columns.Count; j++)
  21. {
  22. row.CreateCell(j).SetCellValue(dt.Columns[j].Caption.ToString());
  23. }
  24. row = sheet.CreateRow(++row_index);
  25.  
  26. //写入数据
  27. for (int j = ; j < (dt.Rows.Count - count > ? : dt.Rows.Count - count); j++)
  28. {
  29. var r = dt.Rows[j + count];
  30. for (int k = ; k <dt.Columns.Count; k++)
  31. {
  32. row.CreateCell(k).SetCellValue(r[k].ToString());
  33.  
  34. //如果是数字,判断是否需要转换为数字
  35. //if (IsNumeric(r[k].ToString()))
  36. //{
  37. // row.CreateCell(k).SetCellValue(Convert.ToDouble(r[k].ToString()));
  38. //}
  39. //else
  40. //{
  41. // row.CreateCell(k).SetCellValue(r[k].ToString());
  42. //}
  43. }
  44.  
  45. row = sheet.CreateRow(++row_index);
  46. }
  47. count += row_index - ;
  48. }
  49. //保存Workbook方式一: 以文件形式保存到服务器中(每次导出都会生成一个文件,慎重使用)
  50. var FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
  51.  
  52. var sw = File.Create(FilePath + FileName);
  53. workbook.Write(sw);
  54. sw.Close();
  55. var EC = new ExcelConverter();
  56. EC.WebopenExcel(Response, FilePath + FileName);
  57. #endregion
  58. }

C#实现DataTable转为Excel文件的更多相关文章

  1. 将word文件转为excel文件

    有些word文件里的数据是有顺序或者规律,想转成表格的形式,下面就以我要转的word为例. 我的word文件是这样的 1.word转txt(文本文件) 文件--->另存为--->路径--- ...

  2. 使用Aspose将DataTable转Excel

    0.准备工作   1.下载并引入Aspose.Cells 下载Aspose Cells并引入using Aspose.Cells 下面示例中用的是.net 3.0版本的Aspose Cells,编译环 ...

  3. 使用Python处理Excel文件的一些代码示例

    笔记:使用Python处理Excel文件的一些代码示例,以下代码来自于<Python数据分析基础>一书,有删改 #!/usr/bin/env python3 # 导入读取Excel文件的库 ...

  4. 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(4)-Excel文件读、写操作

    Excel文件读.写可以使用Office自带的库(Microsoft.Office.Interop.Excel),前提是本机须安装office才能运行,且不同的office版本之间可能会有兼容问题.还 ...

  5. excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)

    将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...

  6. SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable

    MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...

  7. 读取excel 文件到datatable

    上一篇文章介绍了将datatable 内容导出到excel 文件,这里介绍如何将一个excel 文件读取出来,并保持到datatable 中,实际这样的应用场景也是经常遇到的. 这里继续使用了Micr ...

  8. c# 用OpenXmL读取.xlsx格式的Excel文件 返回DataTable

    1.须要引用的dll :  DocumentFormat.OpenXml.dll  ---须要安装一下OpenXml再引用 WindowsBase  ---直接在项目里加入引用 2.方法: /// & ...

  9. 把 DataTable 输出到 excel 文件

    ''' <summary> ''' 把 DataTable 输出到 excel 文件 ''' </summary> ''' <param name="dt_da ...

随机推荐

  1. 手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  2. 微信小程序wx.request 请求方法

    data: 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String .转换规则如下: 对于 GET 方法的数据,会将数据转换成 quer ...

  3. laravel构造函数和中间件执行顺序问题

    今天想重构下代码结构: BaseController.php 放置公共的中间件 class BaseController { public function __construct(){ $this- ...

  4. 如何安装Anaconda和Python

    1.下载安装文件 https://www.anaconda.com/download/ 2.百度安装方法:https://jingyan.baidu.com/article/3f16e0031e875 ...

  5. Codeforces Round #183 (Div. 2)

    A. Pythagorean Theorem II 暴力,\(O(n^2)\). B. Calendar 每个日期计算到0年1月1日的天数,相当于转化成前缀和形式. 闰年数计算\[\lfloor\fr ...

  6. java 内存操作流

    操作内存流的时候(从读取出来,注意一定要把真正的数据用toByteArray或者toCharArray将数据读出来) 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操 ...

  7. 基于AutoIt3的Ping、网址转IP地址,以及hosts文件写入

    #include <Constants.au3> #include <GUIConstantsEx.au3> GUICreate("通讯测试-eip.hxgroup. ...

  8. Educational Codeforces Round 54 (Rated for Div. 2) D Edge Deletion (SPFA + bfs)

    题目大意:给定你一个包含n个点m条边的无向图,现在最多在图中保留k条边,问怎么删除多的边,使得图中良好的节点数最多,求出保留在图中的边的数量和编号. 良好的节点定义为:删除某条边后该点到点1的最短距离 ...

  9. post提交方式为什么要序列化,而Get提交方式就不用?序列化做了什么?

    这是因为后台能够直接处理的数据格式,是一种经过序列化的键值对数据,比如前端要向后台提交三个参数,分别是a=1,b=2,c=3,那么后台接收到的数据就应该是a=1&b=2&c=3(可以看 ...

  10. vue 项目使用局域网多端访问并实时自动更新(利用 browser-sync)

    在写vue的项目中时,虽然vue会自动更新页面,但是切换页面切来切去也很麻烦,有时候我们还要在公司另一台电脑或者手机上调试,这时候利用browser-sync插件,无需改动vue的代码即可实现: 1. ...