资源简介
具体内容请参考我的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#+AE根据点坐标生成shp文件
- seafile私有云的api的C#客户端实现
- c#窗体嵌入应用程序
- 游戏账户管理系统
- 利用C#读取DEM数据,求坡度
- C#实现十六进制AES的加解密字节数组工
- wpf全套基础视频+进阶视频
- C#从txt读取数据并保存在数组
- C#将json格式转换成DataTable
- C#实现DES加解密完整类源码
- C#开发资源库
- C#开发实例大全(基础卷/1.69G/光盘)
- c# 熵权法计算权重和算综合得分
- 页面置换算法LRU模拟c#
- c#时间片轮转算法
- c# yv12转换rgb
- 曼哈顿路径预测算法C#寻路
- 基于C#的波形显示控件的实现源码
- C# 斑马标签打印 WEB&WINFORM
- C# TCP服务器客户端通讯源码
- C#窗体小程序,实现文件夹创建、删除
- C#连接Oracle10g,11g,12g所需的DLL无需安
- C#Winform 销售管理系统
- 服务端获取DTU GPRS数据C#
-
Js to CSharp sc
ript converter - 测控课程设计ad转换程序
- Head First C#(第二版)中文版
- 简单的C#课程设计
- 基于讯飞的离线语音识别C#
- 基于C#的五点N次平滑算法
评论
共有 条评论