资源简介
具体内容请参考我的BLOG:http://blog.csdn.net/smallwhiteyt/archive/2009/11/08/4784771.aspx
如果你耐心仔细看完本文,相信以后再遇到导出EXCLE操作的时候你会很顺手觉得SO EASY,主要给新手朋友们看的,老鸟可以直接飘过了,花了一晚上的时间写的很辛苦,如果觉得对你有帮助烦请留言支持一下,我会写更多基础的原创内容来回报大家。
C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还请大家多多包涵并指出来,我也是个新手,出错也是难免的。
首先先总结下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的请大家补充。
1.数据逐条逐条的写入EXCEL
2.通过OLEDB把EXCEL做为数据源来写
3.通过RANGE范围写入多行多列内存数据到EXCEL
4.利用系统剪贴板写入EXCEL
好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大时所要付出的时间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Reflection;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
/*
* 软件名:C#实现导出EXCEL
* 作者:SmallWhite
* 2009-11-7 23:00
* QQ 296326
* EMail smallwhite@yahoo.cn
*/
namespace DatagridviewToExcel
{
public partial class Form1 : Form
{
System.DateTime TimeP = new System.DateTime(0);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender EventArgs e)
{
button2.Enabled = false;
button3.Enabled = false;
}
#region 打开文件获取文件路径
///
///
///
///
private string getPath()
{
//打开一个文件选择框
openFileDialog1.title = “Excel文件“;
openFileDialog1.FileName = ““;
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
openFileDialog1.Filter = “Excel文件(*.xls)|*.xls“;
openFileDialog1.ValidateNames = true; //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
openFileDialog1.CheckFileExists = true; //验证路径有效性
openFileDialog1.CheckPathExists = true; //验证文件有效性
string strName = string.Empty;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strName = openFileDialog1.FileName;
}
if (strName == ““)
{
MessageBox.Show(“没有选择Excel文件!无法进行数据导入“);
}
return strName;
}
#endregion
#region 导入一个EXCEL表格的数据进DATASET以进行测试之用
///
///
///
void loadSouce()
{
try
{
//连接EXCEL数据源
string strPath = this.getPath();
string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ + strPath + “;Extended Properties=“ + “\““ + “Excel 8.0;HDR=Yes;IMEX=1“ + “\““;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
/*
如果用户把sheet表名改了就是报下面的错:
‘sheet1$‘ 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。
如果可以动态获得Excel中各个sheet的名称能动态的选中返回哪个sheet的数据,
即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择:
下面就把解决问题的代码列出来,主要用到了OleDbConnection.GetOleDbSchemaTable()方法
*/
//返回Excel的架构,包括各个sheet表的名称类型,创建时间和修改时间等
System.Data.DataTable dtSheetName = conn.GetOleDbSc
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8704 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Debug\DatagridviewToExcel.exe
文件 22016 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Debug\DatagridviewToExcel.pdb
文件 14328 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Debug\DatagridviewToExcel.vshost.exe
文件 490 2007-07-21 01:33 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Debug\DatagridviewToExcel.vshost.exe.manifest
文件 217088 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\DatagridviewToExcel.exe
文件 32256 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\DatagridviewToExcel.pdb
文件 14328 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\DatagridviewToExcel.vshost.exe
文件 490 2007-07-21 01:33 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\DatagridviewToExcel.vshost.exe.manifest
文件 1100392 2009-11-06 13:36 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\Microsoft.Office.Interop.Excel.dll
文件 64088 2009-11-06 13:36 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\Microsoft.Vbe.Interop.dll
文件 223800 2009-11-06 13:36 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\bin\Release\office.dll
文件 4197 2009-11-07 23:54 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\DatagridviewToExcel.csproj
文件 20857 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\Form1.cs
文件 7581 2009-11-07 23:50 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\Form1.Designer.cs
文件 156236 2009-11-07 23:50 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\Form1.resx
文件 99678 2009-11-07 23:10 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\ICO.ico
文件 1024 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.csproj.FileListAbsolute.txt
文件 847 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.csproj.GenerateResource.Cache
文件 8704 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.exe
文件 180 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.Form1.resources
文件 22016 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.pdb
文件 180 2009-11-07 21:02 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Debug\DatagridviewToExcel.Properties.Resources.resources
文件 1403 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.csproj.FileListAbsolute.txt
文件 847 2009-11-07 23:50 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.csproj.GenerateResource.Cache
文件 217088 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.exe
文件 100244 2009-11-07 23:54 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.Form1.resources
文件 32256 2009-11-08 00:58 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.pdb
文件 180 2009-11-07 23:54 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\DatagridviewToExcel.Properties.Resources.resources
文件 8663 2009-11-07 21:12 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\obj\Release\ResolveAssemblyReference.cache
文件 500 2009-11-07 20:50 C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)\DatagridviewToExcel\DatagridviewToExcel\Program.cs
............此处省略25个文件信息
- 上一篇:C#+AE根据点坐标生成shp文件
- 下一篇:一个很漂亮的WPF TreeView
相关资源
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
评论
共有 条评论