C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】

上次做了以Excel文件为数据源,进行数据导入,今天,给大家分享一下如何将内存中的datatable以文件流的方式导出为Excel文件,而且个人觉得这个方法非常不错,高效,简单。

技术要点:1.创建文件流,用于写最终的文件StreamWriter sw = new StreamWriter(fileName, false,Encoding.GetEncoding("gb2312"));

2.使用  StringBuilder类把数据组合为长字符串插入到excel文件中,
sb.Append(dt.rows[i][j].ToString() + "\t");
注 意,可不能漏了"\t" 这个是非常重要的! 因为c# "\t"就等于 键盘上的Tab  [朋友们可以试试:打开新的txt然后输入1按Tab,输入2按Tab,输入3按Tab保存,然后打开excel文件  把刚刚保存的txt文件拉进去打开你就发现原来。这样写的话1 2 3 会分别在每个单元格上的了。所以上面才使用 "\t"连起来数据库出来的那堆数据,这样一次性导进去,他们就会按照每个单元格来填充!]

废话不多说了,直接上code。

需要引用:
using System.IO;

publicvoid WriteExcel(DataSet ds, string path)//其中path里要包含要创建的Excel文件的名称
        {
            try
            {
                StreamWriter sw =new StreamWriter(path, false,Encoding.GetEncoding("gb2312"));
                StringBuilder sb =new StringBuilder();
                for (int k =0; k < ds.Tables[0].Columns.Count; k++)
                {
                    sb.Append(ds.Tables[0].Columns[k].ColumnName.ToString() +"\t");
                }
                sb.Append(Environment.NewLine);

for (int i =0; i < ds.Tables[0].Rows.Count; i++)
                {
                     for (int j =0; j < ds.Tables[0].Columns.Count; j++)
                    {
                        sb.Append(ds.Tables[0].Rows[i][j].ToString() +"\t");
                    }
                    sb.Append(Environment.NewLine);//每写一行数据后换行
                }
                sw.Write(sb.ToString());
                sw.Flush();
                sw.Close();//释放资源
                MessageBox.Show("已经生成指定Excel文件!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }            
        }

时间: 2024-10-13 19:07:38

C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】的相关文章

C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)【转载】

上次写了一个用文件流方式将Datatable导出Excel的方法,这个方法有局限性,比如没法对Excel进行一些增加列颜色等简单的操作,现在,给大家介绍另外一种方法,用微软的Excel类.既然要用到类,那必须是你的机子要装上Excel才行呢. public  void DataTabletoExcel(System.Data.DataTable[] tmpDataTable,string date1,string date2) { string saveFileName = ""; S

利用libjpeg库解码内存中的jpeg数据

在"VS2013编译libjpeg库"这篇文章中本人介绍了如何在VS中编译libjpeg库并提供了一个应用的范例,而这篇文章将在此基础上,介绍如何用libjpeg库来解码内存中的jpeg数据. 其实这个需求已经不新鲜了,网上也能找到别人提供的一些解决方法,之所以要再次写不过是因为本人觉得那些方法或多或少都有些不对的地方,或者说因为版本的迭代,本来是对的,现在有点问题.当然,本人并没有很费心思的自己去一行一行的看源代码,实现的过程基本是参考这篇文章来做的,所以这里只是提供怎么改,而为什么

C# 操作地址 从内存中读取写入数据(初级)

本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光地址都是变的, 唯一不变的基址1, 我们要通过CE工具找到基址1的地址, 可以算出阳光的地址. 基址2的地址 = 基址1中的值 + 偏移1; 阳光的的地址 = 基址2中的值 + 偏移2; 以下为简单示例:  窗口界面一个按钮 和 一个定时器 using System; using System.Co

caffe使用MemoryDataLayer从内存中加载数据

最近在搞caffe的应用,因为很多时候我们需要进行服务器来进行特征的抽取,所以我们需要很将单张图片丢入caffe的网络进行一次传递,这样就诞生了一个从内存中如何加载数据进入caffe的需求,这里我直接贴出代码来先: #include <boost/make_shared.hpp> // these need to be included after boost on OS X #include <string> // NOLINT(build/include_order) #inc

如何将内存中的位图数据绘制在DC上

假如你定义了一个位图类,里面包含位图头,位图信息头,调色板,位图数据.然后你按照位图的格式将位图文件读入你的类中,现在你知道了位图的全部信息了.主要信息包含在位图信息头里面,数据则在位图数据缓冲里面.现在的问题是,在Windows下面如何将一张位图画出来,而且现在是如何从数据缓存里面绘画出位图.  一般情况,我们都是直接绘制在dc里面,而不是绑定到子控件,让子控件自己绘画,比如picture控件之类的,我觉得提供绘制在dc里面的接口更具有广泛性. 现在我知道两种从内存数据绘制彩色位图的2种方法.

在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF

asp.net后台导出excel的方法一:使用response导出excel

方法一:带StringBuilder 方法的导出 该方法是将所有的数据通过html的形式写入到StringBuilder 中,然后通过response导出. 熟悉html格式的人可以改变成各种格式. List<U> objList = new List<U>(); objList = BLL.GetInfo();//读取数据 StringBuilder sb = new StringBuilder(); sb.Append("<style type=\"t

简单了解:在内存中的数据

内存原理 开启电源,启动BIOS,CPU工作,调用内存,内存跟硬盘索要资源 当你点击一个文件的时候数据经过数据总线传达到CPU,CPU发送指令到内存,内存那里会跟硬盘沟通,问他有没有这个东西,他说有,你就会看到这个文件夹里面是什么东西. (Xee:RAM 是随机存取存储器,它的特点是易挥发性,即掉电失.--妈蛋,难怪一断电,我的东西没保存,就找不到了-- 既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态

C/C++数据在内存中的存储方式

目录 1 内存地址 2 内存空间 ??在学习C/C++编程语言时,免不了和内存打交道,在计算机中,我们存储有电影,文档,音乐等数据,这些数据在内存中是以什么形式存储的呢?下面做一下简单介绍. 本文是学习VIPler的博文关于内存地址和内存空间的理解之后整理的,感谢VIPler提供学习资源. 1 内存地址 ??我们经常在书上或者网络上看到4位和8位的内存地址表示方法,比如0x0001或者0x00000001,为什么会有这两种区别呢? ??其实,这两种表示方法都是表示的编号为1的内存地址,都只是一个