- 浏览: 544255 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
C#数据导出到ExcelC#导出到EXCEL
1.首先声明,这些方法也都是本人搜集的资料,然后为已所用,程序中不足之处,还请高手指点. 这些方法都没有关闭Excel进程。
2.网上有好多关于用SQL语句导入导出的例子,这里不再重复写了。
方法1:调用com组件,导出access数据到Excel,就是直接调用access的导出功能,此方法速度超级快
using Access;
Access.ApplicationClass oAccess = new Access.ApplicationClass();
oAccess.Visible = false;
try
{ //ACCESS9:
oAccess.OpenCurrentDatabase("d:\\wcf.mdb",false,"");
//导出到excel
oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Acce ss.AcSpreadSheetType.acSpreadsheetTypeExcel9,"工作表名","d:\\wcf.xls",true,null,null);
//导入txt
//oAccess.DoCmd.TransferText(Access.AcTextTransferType.acExportDelim,"","Enterprise","d:\\wcf.txt",true,"",0);
oAccess.CloseCurrentDatabase();
oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);
System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess);
oAccess = null;
MessageBox.Show("导入成功");
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
GC.Collect();
}
方法2:此方法速度也是超级快,只不过导出的格式非标准的Excel格式,默认工作表名与文件名相同
string FileName="d:\\abc.xls";
System.Data.DataTable dt=new System.Data.DataTable();
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine="";
objFileStream = new FileStream(FileName,FileMode.OpenOrCreate,FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream,System.Text.Encoding.Unicode);
for(int i=0;i<dt.Columns.Count;i++)
{
strLine=strLine+dt.Columns[i].ColumnName.ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";
for(int i=0;i<dt.Rows.Count;i++)
{
strLine=strLine+(i+1)+Convert.ToChar(9);
for(int j=1;j<dt.Columns.Count;j++)
{
strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";
}
objStreamWriter.Close();
objFileStream.Close();
方法3:用Ado.net 此方法速度较以上两个显得慢了一些,数据量越大越明显
int Id=0;
string Name="测试";
string FileName="d:\\abc.xls";
System.Data.DataTable dt=new System.Data.DataTable();
long totalCount=dt.Rows.Count;
long rowRead=0;
float percent=0;
OleDbParameter[] parm=new OleDbParameter[dt.Columns.Count];
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName +";Extended Properties=Excel 8.0;";
OleDbConnection objConn = new OleDbConnection(connString);
OleDbCommand objCmd = new OleDbCommand();
objCmd.Connection = objConn;
objConn.Open();
//建立表结构
objCmd.CommandText = @"CREATE TABLE Sheet1(序号 Integer,名称 varchar)";
objCmd.ExecuteNonQuery();
//建立插入动作的Command
objCmd.CommandText = "INSERT INTO Sheet1("+Id+","+Name+")";
parm[0]=new OleDbParameter("@Id", OleDbType.Integer);
objCmd.Parameters.Add(parm[0]);
parm[1]=new OleDbParameter("@Company", OleDbType.VarChar);
objCmd.Parameters.Add(parm[1]);
//遍历DataTable将数据插入新建的Excel文件中
for(int i=0;i<dt.Rows.Count;i++)
{
parm[0].Value=i+1;
for(int j=1;j<parm.Length;j++)
{
parm[j].Value =dt.Rows[i][j];
}
objCmd.ExecuteNonQuery();
rowRead++;
percent=((float)(100*rowRead))/totalCount;
//this.FM.CaptionText.Text = "正在导出数据,已导出[" + percent.ToString("0.00") + "%]...";
if(i==dt.Rows.Count-1)
//this.FM.CaptionText.Text = "请稍后......";
System.Windows.Forms .Application.DoEvents();
}
objConn.Close();
//this.FM.CaptionText.Text = "";
方法4:此方法调用com组件,速度都慢于以上3个方法
using Excel;
System.Data.DataTable dt=new System.Data.DataTable();
string FileName="d:\\abc.xls";
long totalCount=dt.Rows.Count;
long rowRead=0;
float percent=0;
Excel.Application xlApp=null;
xlApp=new Excel.Application();
Excel.Workbooks workbooks=xlApp.Workbooks;
Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];
//取得sheet1
Excel.Range range;
//写入字段
for(int i=0;i<dt.Columns.Count;i++)
{
worksheet.Cells[1,i+1]=dt.Columns[i].ColumnName;
range=(Excel.Range)worksheet.Cells[1,i+1];
}
for(int r=0;r<dt.Rows.Count;r++)
{
worksheet.Cells[r+2,1]=r+1;
for(int i=0;i<dt.Columns.Count;i++)
{
//worksheet.Cells[r+2,i+1]=dt.Rows[r][i];
if(i+1!=dt.Columns.Count)
worksheet.Cells[r+2,i+2]=dt.Rows[r][i+1];
}
rowRead++;
percent=((float)(100*rowRead))/totalCount;
//this.FM.CaptionText.Text = "正在导出数据,已导出[" + percent.ToString("0.00") + "%]...";
System.Windows.Forms .Application.DoEvents();
}
range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[dt.Rows.Count+2,dt.Columns.Count]);
workbook.Saved =true;
workbook.SaveCopyAs(FileName);
//this.FM.CaptionText.Text = "";
方法5:利用剪贴板 ,有人说此方法很快,但是我用时,这种方法最慢,请高手指点.
System.Data.DataTable dt=new System.Data.DataTable();
string filePath=@"d:\abc.xls";
object oMissing = System.Reflection.Missing.Value;
Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
try
{
xlApp.Visible = false;
xlApp.DisplayAlerts = false;
Excel.Workbooks oBooks = xlApp.Workbooks;
Excel._Workbook xlWorkbook = null;
xlWorkbook = oBooks.Open(filePath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,
oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);
Excel.Worksheet xlWorksheet;
// 添加入一个新的Sheet页。
xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);
// 以TableName作为新加的Sheet页名。
xlWorksheet.Name ="企业名录";
// 取出这个DataTable中的所有值,暂存于stringBuffer中。
string stringBuffer = "";
for( int j=0; j<dt.Rows.Count; j++ )
{
for( int k=0; k<dt.Columns.Count; k++ )
{
stringBuffer += dt.Rows[j][k].ToString();
if( k < dt.Columns.Count - 1 )
stringBuffer += "\t";
}
stringBuffer += "\n";
}
// 利用系统剪切板
System.Windows.Forms.Clipboard.SetDataObject("");
// 将stringBuffer放入剪切板。
System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
// 选中这个sheet页中的第一个单元格
((Excel.Range)xlWorksheet.Cells[1,1]).Select();
// 粘贴!
xlWorksheet.Paste(oMissing,oMissing);
// 清空系统剪切板。
System.Windows.Forms.Clipboard.SetDataObject("");
// 保存并关闭这个工作簿。
xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
xlWorkbook = null;
发表评论
-
CMPP短信网关客户端发送程序
2010-04-06 11:12 4796最近无聊,玩了玩ubuntu ... -
C#编程中的预处理指令
2010-01-13 11:22 1448在C#中, 虽然编译器没有单独的预处理器,但在处理预处理指令时 ... -
vs 打包winform程序步骤经验总结
2010-01-06 09:47 59341、 应用程序文件夹 : 在应用程序文件夹下新建一文件夹重名为 ... -
处理资源 'http://localhost/ws/Service.asmx' 时出错(iis,.netframework安装顺序造成的错)
2009-12-30 17:10 1966刚刚学习webservices,很多东西都不懂。写了个最简单的 ... -
图解在VS2005利用NUnit进行测试
2009-12-21 12:53 1604一、介绍NUnit是一款用于在.net环境进行单元测试的工具, ... -
如何编写单元测试用例(转载自CSDN)
2009-12-17 17:01 3217一、 单元测试的概念 ... -
NUnit2.0详细使用方法
2009-12-17 17:00 11085 .测试生命周期合约 如果记得test case的定义,其中 ... -
NUnit2.0详细使用方法
2009-12-17 16:58 12321、初识NUnitNUnit是一个开源单元测试框架,它提高一套 ... -
在.NET环境中使用单元测试工具Nunit
2009-12-17 16:56 1095简介编写单元测试是一 ... -
.NET命名空间使用介绍
2009-12-17 11:29 1768在ASP.NET中,.NET Framework为我们 ... -
一种清晰而又简单通用的分页算法
2009-12-17 10:03 6146分页,是WEB开发中面对的最常见的编程,实现方法多种多样。我也 ... -
C#数据结构-双向链表
2009-12-17 09:54 1994在结点中设两个引用域,一个保存直接前驱结点的地址,叫prev, ... -
读书笔记c#高级编程 委托和事件
2009-12-17 09:49 1131在C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编 ... -
深入理解C#中的委托和事件:委托的定义
2009-12-16 16:04 1682委托和事件在 .Net Framework中的应用非常广泛,然 ... -
C#委托和事件(简单示例)
2009-12-16 15:46 38711.委派的实现过程。 首先来看一下委派,委派其实就是方法的传 ... -
关于配置文件的读取
2009-11-18 16:52 2194在1.0/1.1版本,都流行的 ... -
C# WInForm 无框窗体移动
2009-11-12 13:56 2058调用APIusing System.Runtime.Inter ... -
在C# 中如何动态地添加控件
2009-09-09 11:05 3699通常在写程序的时候 ... -
ListBox相互移动
2009-08-14 17:33 1468using System;using System.Colle ... -
TreeView-demo
2009-08-14 17:22 1355using System;using System.Co ...
相关推荐
首先,让我们了解基础的C#数据导出到Excel的过程。这个过程通常涉及到创建一个Excel文件(.xlsx格式),然后在其中填充数据。在C#中,我们可以利用Microsoft.Office.Interop.Excel库来与Excel进行交互。这是一个.NET...
以下是一些关于如何在C#中实现数据导出到Excel的关键知识点: 1. **Microsoft Office Interop**: 这是微软提供的一个接口,允许C#代码与Office应用程序(如Excel)进行交互。通过这个接口,开发者可以直接操作Excel...
C#大量数据导出到Excel,超过65536行时自动分页导出
c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#) winform
C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,...
本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...
9. **考虑使用其他库**:除了Interop,还有许多第三方库(如EPPlus、NPOI)提供更高效的数据导出,它们不依赖于Excel进程,适合大数据量操作。 在提供的`Demo`文件中,可能包含了实现以上优化策略的示例代码,你...
### C#将数据导出为Excel格式的知识点详解 #### 一、导出到Excel的基本原理与步骤 在本示例中,我们主要探讨如何使用C#编程语言将数据导出为Excel格式。该示例提供了较为完整的实现过程,包括用户界面交互、Excel...
C# datatable直接导出数据到Excel,(数据量百万级只需3秒)
该资源给出了详细的数据导出功能代码 可以导出至Excel或者Word
以下是对几种利用C#语言进行数据导出到Excel的方法的详细解析,旨在为开发者提供实用的指导。 ### 方法一:使用OLEDB连接 此方法通过OLEDB(Object Linking and Embedding Database)技术,直接操作Excel文件,将...
在C#编程中,将图片导出到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据可视化场景下。本文将详细介绍如何使用C#实现这一功能,主要包括以下知识点: 1. **Excel Interop库**:微软提供了Excel Interop...
以上就是使用C#和EPPlus库将`TreeView`数据导出到Excel的基本步骤。在实际应用中,可能需要根据具体需求进行调整,比如处理自定义数据、设置样式、处理错误等。记住,确保在项目中正确引用EPPlus库,并在使用前检查...
在开发Web应用程序时,我们经常会遇到需要将GridView中的数据导出至Excel的需求。然而,在实际操作过程中,有时候会发现导出的数据中的一些数值被Excel自动转换成了科学计数法,这对于数据分析或者进一步处理来说并...
在IT行业中,尤其是在开发领域,将数据导出到Excel是一种常见的需求,特别是在数据分析、报表生成或者数据交换等场景。在.NET框架下,C#作为主要的编程语言之一,提供了多种方式来实现这一功能。本篇将详细介绍使用...
如果你耐心仔细看完本文,相信以后再遇到导出...C#导出数据到EXCEL表格是个老生常谈的问题了,文章主要提供两种导出EXCEL的方法并探讨导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改。
在C#编程中,将数据导出到Excel是一种常见的需求,尤其在数据分析、报表生成或者数据交换场景下。本文将详细介绍如何使用C#实现这一功能,主要涉及的知识点包括: 1. **Excel文件格式理解**:Excel文件有两种主要...
本话题聚焦于如何利用C#将数据导出到Excel文件,这在数据分析、报表生成以及数据交换等场景中非常常见。JavaScript,尽管主要用在前端,但在与后端C#交互时也扮演着重要角色,特别是在处理动态数据和用户交互时。 1...
本主题聚焦于如何利用C#将数据导出到Excel模板,并自定义字段,这是一个常见的需求,尤其是在数据分析、报告生成和数据共享的场景中。 在C#中,我们可以利用各种库来操作Excel,如EPPlus、NPOI或Microsoft.Office....
标题中的"C# 数据导出到EXCEL"是一个常见的IT...总的来说,C#数据导出到Excel涉及的技能包括C#编程、文件操作、数据处理、以及对Excel特性的理解。开发者需要根据实际需求选择合适的方法,确保数据导出的效率和灵活性。