c# 大批量数据导出到excel[1]

C# DataGridView 数据导出Excel 最近需要将DataGridView 中的数据导出到Excel,已做不时之需!所以,网上搜了下相关资料,这部分资料还是很全的,只是都有些小bug。我做了下整理和修复。贴在这里备自己以后用,方便,也便于大家分享! 1. 安装Microsoft.Office.Interop.Excel 。这里我是按照Nuget 安装的 (引用->管理NuGet程序包->浏览-> 安装Microsof... 阅读详情

 c# 大批量数据导出到excel[此为个人分享]

我的方法不是使用微软的excel操作类,因为那种实在爆慢,一个个单元格循环写,实在太慢了。【不信朋友们可以试试,或者看看我另外一篇日志:c# 大批量数据导出到excel[2]】
而使用io写的话 半分钟都不用
我数据库数据量为:120000行 29列

技术要点:1.使用的是StreamWriter sw = new StreamWriter(path, false,Encoding.GetEncoding("gb2312"));最终生成文件
2.使用 StringBuilder sb = new StringBuilder();类把查询出来的数据组合为一句超长字符串一次性插入到excel中,
sb.Append(ds.Tables[0].Columns[k].ColumnName.ToString() + "\t");
注意,可不能漏了"\t" 这个是非常重要的! 因为c# "\t"就等于 键盘上的Tab [朋友们可以试试:打开新的txt然后输入1按Tab,输入2按Tab,输入3按Tab保存,然后打开excel文件 把刚刚保存的txt文件拉进去打开你就发现原来。这样写的话1 2 3 会分别在每个单元格上的了。所以上面才使用 "\t"连起来数据库出来的那堆数据,这样一次性导进去,他们就会按照每个单元格来填充!]

需要引用:
using System.Threading;
using System.IO;
方法如下:
 private void button1_Click(object sender, EventArgs e)
        {            
            saveFileDialog1.Title = "保存的excel文件";
            saveFileDialog1.InitialDirectory = "c:\\";
            saveFileDialog1.Filter = "Excel97-2003 (*.xls)|*.xls|All Files (*.*)|*.*";
            saveFileDialog1.ShowDialog();
            if (saveFileDialog1.FileName == "" || saveFileDialog1.FileName == null)
            {
                MessageBox.Show("文件名不能为空!");
                return;
            }
            string path = saveFileDialog1.FileName;
            string constr = "Data Source=.;Initial Catalog=Exhibition;User ID=sa;Password=";
            string sql = GetStrSql();
            DataSet ds=new DataSet();
            using (SqlConnection con = new SqlConnection(constr))
            {
                SqlDataAdapter da = new SqlDataAdapter(sql, con);
                da.Fill(ds);
            }
            if (ds == null)
            {
                MessageBox.Show("数据获取有误!");
                return;
            }
            WriteExcel(ds, path);      
        }
public void WriteExcel(DataSet ds, string path)
        {
            try
            {
                long totalCount = ds.Tables[0].Rows.Count;
                lblTip.Text = "共有" + totalCount + "条数据。";
                Thread.Sleep(1000);
                long rowRead = 0;
                float percent = 0;
                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++)
                {
                    rowRead++;
                    percent = ((float)(100 * rowRead)) / totalCount;
                    Pbar.Maximum = (int)totalCount;
                    Pbar.Value = (int)rowRead;
                    lblTip.Text = "正在写入[" + percent.ToString("0.00") + "%]...的数据";
                    System.Windows.Forms.Application.DoEvents();
                    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);
            }            
        }
public string GetStrSql()
        {
            string strSql = "select d.* from ( select cBarcode ,max(case halldoorid  When '36' then '1' else '0' end ) [1.1号馆],max(case halldoorid  When '37' then '1' else '0' end ) [2.1号馆],max(case halldoorid  When '38' then '1' else '0' end ) [3.1号馆],max(case halldoorid  When '39' then '1' else '0' end ) [4.1号馆],max(case halldoorid  When '40' then '1' else '0' end ) [5.1号馆],max(case halldoorid  When '41' then '1' else '0' end ) [6.1号馆],max(case halldoorid When '42' then '1' else '0' end ) [8.1号馆],max(case halldoorid  When '43' then '1' else '0' end ) [1.2号馆],max(case halldoorid  When '44' then '1' else '0' end ) [2.2号馆],max(case halldoorid  When '45' then '1' else '0' end ) [3.2号馆],max(case halldoorid  When '46' then '1' else '0' end ) [4.2号馆],max(case halldoorid  When '47' then '1' else '0' end ) [5.2号馆],max(case halldoorid  When '48' then '1' else '0' end ) [9.1号馆],max(case halldoorid  When '49' then '1' else '0' end ) [10.1号馆],max(case halldoorid  When '50' then '1' else '0' end ) [11.1号馆],max(case halldoorid  When '51' then '1' else '0' end ) [12.1号馆],max(case halldoorid  When '52' then '1' else '0' end ) [13.1号馆],max(case halldoorid  When '53' then '1' else '0' end ) [9.2号馆],max(case halldoorid  When '54' then '1' else '0' end ) [10.2号馆],max(case halldoorid  When '55' then '1' else '0' end ) [11.2号馆],max(case halldoorid  When '56' then '1' else '0' end ) [12.2号馆],max(case halldoorid  When '57' then '1' else '0' end ) [13.2号馆],max(case halldoorid  When '58' then '1' else '0' end ) [9.3号馆],max(case halldoorid  When '59' then '1' else '0' end ) [10.3号馆],max(case halldoorid  When '60' then '1' else '0' end ) [11.3号馆],max(case halldoorid  When '61' then '1' else '0' end ) [VIP3.2号馆],max(case halldoorid  When '62' then '1' else '0' end ) [VIP11.3号馆],max(case halldoorid  When '63' then '1' else '0' end ) [VIP14.3号馆]from tblReadCard  group by cBarcode ) d left join ( select cBarcode 观众条码 from (select distinct cBarcode,cReadDate from tblReadCard where cReadDate between '2011-07-08' and '2011-07-11') a group by cBarcode  ) c on d.cBarcode=c.观众条码 group by cBarcode,[1.1号馆],[2.1号馆],[3.1号馆],[4.1号馆],[5.1号馆],[6.1号馆],[8.1号馆],[1.2号馆],[2.2号馆],[3.2号馆],[4.2号馆],[5.2号馆],[9.1号馆],[10.1号馆],[11.1号馆],[12.1号馆],[13.1号馆],[9.2号馆],[10.2号馆],[11.2号馆],[12.2号馆],[13.2号馆],[9.3号馆],[10.3号馆],[11.3号馆],[VIP3.2号馆],[VIP11.3号馆],[VIP14.3号馆]";
            return strSql;
   }

转自 http://csharp123.blog.163.com/blog/static/184371081201162413440681/

C#把数据导出到Excel表格 开发工具与关键技术:VS C# 作者:梁茵茵 撰写时间:2019年 5月 1日 把数据导出到Excel表格之前对所有数据进行查询,用户可以查询全部数据也可以筛选部分数据导出,将查询出来的数据转化为对象列表的格式 List<数据表> listExaminee = listStu.ToList(); 将页面上查询出来的数据导入到Excel表格的时候还要在项目里引用一个插件NPOI,这个N... 阅读详情

相关推荐

c# 将list中的数据导出到excel

#region 导入模版 另存excel /// &amp;lt;summary&amp;gt; /// 生成附件(使用Microsoft.Office.Interop.Excel组件的方式) /// &amp;lt;/summary&amp;gt; /// &amp;lt;param name=&quot;DT&quot;&amp;gt;&amp;lt;/param&amp;gt;

delina0的博客 5450

c#数据库数据导出excel(百万级数据)

废话不多说,先上界面: 代码: private void button3_Click_1(object sender, EventArgs e) { DataSource ds = new DataSource(); SqlConnection conn = ds.GetConn(); ...

Dxy的博客 2616

C#使用NPOI将List数据导出到Excel文档

NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。使用 NPOI 可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。这里

dnazhd的博客 3069

数据库百万级数据量的导入导出(excel)

数据库百万级数据量的导入导出(excel)

Ciao's blog 2167

C#导出数据到Excel(百万级3秒)

C# datatable直接导出数据到Excel,(数据量百万级只需3秒)

百万级数据在Excel和Sql数据库之间相互导入、导出

百万级数据在Excel和SqlServer之间相互导入导出。

大数据(百万)导出到excel

如果不需要分页查询,可以一次性查询出来,减少了查询次数,效率应该会更高。如果使用ForkJoin是不是会效率更高,还没试过,下次试试。

wenjiehk的博客 1440

C#实现几十万级数据导出Excel及Excel各种操作实例

先上导出代码   /// /// 导出速度最快 /// /// <列名,数据> /// /// public bool NewExport(List list, string filepath) { bool bSuccess = true;

C#报表数据批量快速导出到Excel(百万级数据秒级内完成)

我做的C#前端(winfor),在报表数据输出到Excel中大致分为两种方式:       一种方式是把数据传输给后台,让后台制作成Excel文件之后返回给前端然后保存到客户的电脑上(速度秒级);       还有一种方式是前端通过office或者wps插件将数据制作成Excel文件保存到客户端上(其中又分三种制作方法,       1:一种是一格一格的对应数据填入Excel表

u013109267的博客 2万+

闲人闲谈PS之十二——WBS-BOM在装备制造项目中的实战解析

本文深入解析了WBS-BOM在装备制造项目中的核心应用。针对按订单设计/生产的行业痛点,WBS-BOM作为项目专属物料清单,完美连接SAP PS与PP模块,确保MRP能基于项目进行精准物料需求计算,实现从设计到生产的全链路项目化跟踪与管理。

weixin_29284885的博客 400

QGC二次开发实战指南(一):从零构建自定义地面站界面

本文详细介绍了QGC二次开发实战指南,从零开始构建自定义地面站界面。通过QT和QML技术结合MAVLINK协议,开发者可以打造适合特定业务场景的无人机监控系统,提升操作效率与用户体验。文章包含环境搭建、界面设计、数据绑定等完整开发流程,是QGC二次开发的实用教程。

weixin_28693683的博客 496

C# 实现二维数据数组导出到 Excel

将数据库查询出来的数据导出并生成 Excel 文件,是项目中经常使用的一项功能。本文将介绍通过数据集生成二维数据数组并导出到 Excel

初九之潜龙勿用 4860

Colmap中 patchmatch源码

惊世骇俗的Colmap PatchMatch源码 500多行,简明易懂 先了解PatchMatch的options: max_image_size: 任一维度的最大图像尺寸 gpu_index: gpu的下标 depth_min,depth_max: 随机采样的深度范围 window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com) window_step: 用.

qq_24884193的博客 2210

C# DataGridView数据导出Excel文件

前言: 博主在做项目的时候需要把数据库的数据用DataGridView展示,然后把展示的数据导出为Excel文件,很多时候我们做项目都会有一个下载文件的按钮,我们需要用微软的的接口,Microsoft.Office.Interop.Excel,我们需要导入这个引用对DataGridView数据进行处理,利用Microsoft.Office.Interop.Excel提供的类对数据进行导出。博主把具体的操作步骤写下来教大家使用!!!! 每日一遍,快乐就完事了 1.创建窗体文件并设计好界面 博主直接用的之前的

qq_46104786的博客 1万+

WPS接入DeepSeek,实现AI辅助功能

总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。

运维老生常谈 3806

Keil MDK编译错误#541解决方案与ARM_Compiler包解析

在嵌入式开发中,编译器工具链的依赖管理是确保项目顺利构建的关键环节。以Keil MDK为例,其软件包依赖机制通过组件化设计实现功能解耦,其中ARM_Compiler包专门处理系统IO重定向等编译器扩展功能。这种架构既提升了模块复用性,也带来了版本兼容性挑战。当出现'Error #541: component missing'报错时,通常是由于中间件组件(如文件系统)在新版本中显式依赖了ARM_Compiler包。开发者需要通过Pack Installer安装该包,并在Run-Time Environment

weixin_32129187的博客 368

C# 开发应用篇——C# 基于WPF实现数据记录导出excel详解

C# 基于WPF实现数据记录导出excel

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 5349

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 476

C#中数据库数据如何导出至Excel表格

有时候需要将数据库的数据导出至Excel表格表格,以便进行查看和分析,那么如何导出呢?下面用代码来实现。     首先,新建一个工程,需要添加引用Microsoft.Office.Interop.Excel.dll,以Oracle数据库为例(只要读出DataTable或DataSet就行了,哪种数据库没关系)。 1、创建一个表格,并插入如下数据。 drop table TABLETESTEX

杨友山 4万+

抖音无水印视频爬虫实战:从抓包分析到批量下载指定用户作品

抖音作为当前最受欢迎的短视频平台,拥有海量的优质内容。很多用户希望备份自己或他人的作品,但抖音官方并未提供批量下载功能,且直接下载的视频带有平台水印。本文将带领大家从零开始,通过抓包分析、设备模拟、请求签名等核心技术,实现一个完整的抖音无水印视频爬虫系统。本文仅供技术学习和个人备份使用,请勿将爬取的内容用于商业用途或侵犯他人版权,爬取频率请控制合理范围内。目录一、前言二、技术栈概览三、准备工作3.1 环境搭建3.2 抓包分析步骤3.3 关键API发现四、核心技术解密4.1 X-Gorgon签名算法。

2201_76125261的博客 846

Realtek千兆PHY RTL8211FS相关寄存器操作详解

通过合理配置和控制RTL8211FS寄存器,您可以实现对以太网的各种功能和参数的控制和配置。请注意,具体的寄存器操作和配置值可能因具体需求而有所不同,您应参考RTL8211FS芯片的数据手册以获取准确的寄存器说明和操作规范。我们将提供相应的源代码示例,以帮助您理解和实施这些操作。通过操作这些寄存器,我们可以配置和控制RTL8211FS芯片的各种功能和参数。需要注意的是,具体的寄存器操作和配置值会根据您的具体需求而有所不同。您需要参考RTL8211FS芯片的数据手册以获取详细的寄存器说明和操作规范。

RlDart的博客 2660

c# 大批量数据导出到excel

我的方法不是使用微软的excel操作类,因为那种实在爆慢,一个个单元格循环写,实在太慢了。 而使用io写的话120000行29列半分钟都不用 技术要点:1.使用的是StreamWritersw=newStreamWriter(path,false,Encoding.GetEncoding("gb2312"));最终生成文件 2.使用StringBuildersb=newStringBuilder();类把查询出来的数据组合为一句超长字符串一次性插入到excel中, sb.App...

feritylamb的博客 1542

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#将DataGridView中的数据导出为EXCEL

方法:        #region 将DataGridView控件中数据导出到Excel        ///         /// 将DataGridView控件中数据导出到Excel        ///         /// DataGridView对象        /// 是否显示Excel界面        ///         public bool ExportDa

天天向上... ... 6823

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#将DataGridView中数据导出为Excel

C#将DataGridView中数据导出为Excel 1、首先需要添加Microsoft Office 16.0 Object Library 2、导入引用using Excel = Microsoft.Office.Interop.Excel; SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Filte...

一个萌新的小白的博客 3979

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c# 大批量数据导出到excel (使用System.IO导出)

预备知识: 关于excel workbook:工作簿,每一个xls或xlsx相当于一个工作簿。  sheet:工作表,每个工作簿可以有多个工作表。工作表相当于一张纸,工作簿相当于一个本子,将过个工作表集合在一起。  row:行  column:列  cell:单元格(表格中的最小单位,接下来导出表格就是对cell进行操作)   将DataTable中的大量数据导出到Excel表格中。 但每张E...

zgscwxd的博客 6788

c#将数据写入excel导出

1、项目添加引用NPOI包。 2、尝试写一行数据写到excel中并导出。 public static void ExcelTest() { //导出:将数据库中的数据,存储到一个excel中 //1、查询数据库数据 //2、 生成excel ...

u013934107的博客 2905
上一篇: html字符串处理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值