`
coconut_zhang
  • 浏览: 544255 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

C#数据导出到Excel

阅读更多

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;

分享到:
评论

相关推荐

    C#数据导出到Excel自定义样式

    首先,让我们了解基础的C#数据导出到Excel的过程。这个过程通常涉及到创建一个Excel文件(.xlsx格式),然后在其中填充数据。在C#中,我们可以利用Microsoft.Office.Interop.Excel库来与Excel进行交互。这是一个.NET...

    C# 数据导出到Excel

    以下是一些关于如何在C#中实现数据导出到Excel的关键知识点: 1. **Microsoft Office Interop**: 这是微软提供的一个接口,允许C#代码与Office应用程序(如Excel)进行交互。通过这个接口,开发者可以直接操作Excel...

    C#大量数据导出到Excel自动分页导出

    C#大量数据导出到Excel,超过65536行时自动分页导出

    c# 导出到Excel (C# winform)

    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方法谈(附实例源码和超级无敌详细讲解)

    C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,...

    C# 将数据导出到Excel汇总

    本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...

    C# 大数据量快速导出到 Excel方法

    9. **考虑使用其他库**:除了Interop,还有许多第三方库(如EPPlus、NPOI)提供更高效的数据导出,它们不依赖于Excel进程,适合大数据量操作。 在提供的`Demo`文件中,可能包含了实现以上优化策略的示例代码,你...

    C#把数据导出为Excel格式

    ### C#将数据导出为Excel格式的知识点详解 #### 一、导出到Excel的基本原理与步骤 在本示例中,我们主要探讨如何使用C#编程语言将数据导出为Excel格式。该示例提供了较为完整的实现过程,包括用户界面交互、Excel...

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

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

    C# 数据导出到Excel或者Word源代码

    该资源给出了详细的数据导出功能代码 可以导出至Excel或者Word

    C#数据导出到Excel,几种方法

    以下是对几种利用C#语言进行数据导出到Excel的方法的详细解析,旨在为开发者提供实用的指导。 ### 方法一:使用OLEDB连接 此方法通过OLEDB(Object Linking and Embedding Database)技术,直接操作Excel文件,将...

    C#导出图片到EXCEL

    在C#编程中,将图片导出到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据可视化场景下。本文将详细介绍如何使用C#实现这一功能,主要包括以下知识点: 1. **Excel Interop库**:微软提供了Excel Interop...

    C# Treeview 导出Excel

    以上就是使用C#和EPPlus库将`TreeView`数据导出到Excel的基本步骤。在实际应用中,可能需要根据具体需求进行调整,比如处理自定义数据、设置样式、处理错误等。记住,确保在项目中正确引用EPPlus库,并在使用前检查...

    防止GridView导出到excel中自动转成科学计数法

    在开发Web应用程序时,我们经常会遇到需要将GridView中的数据导出至Excel的需求。然而,在实际操作过程中,有时候会发现导出的数据中的一些数值被Excel自动转换成了科学计数法,这对于数据分析或者进一步处理来说并...

    C#导出到Excel

    在IT行业中,尤其是在开发领域,将数据导出到Excel是一种常见的需求,特别是在数据分析、报表生成或者数据交换等场景。在.NET框架下,C#作为主要的编程语言之一,提供了多种方式来实现这一功能。本篇将详细介绍使用...

    C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解).rar

    如果你耐心仔细看完本文,相信以后再遇到导出...C#导出数据到EXCEL表格是个老生常谈的问题了,文章主要提供两种导出EXCEL的方法并探讨导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改。

    C#把数据导出到EXCEL强大类

    在C#编程中,将数据导出到Excel是一种常见的需求,尤其在数据分析、报表生成或者数据交换场景下。本文将详细介绍如何使用C#实现这一功能,主要涉及的知识点包括: 1. **Excel文件格式理解**:Excel文件有两种主要...

    C#导出数据到Excel

    本话题聚焦于如何利用C#将数据导出到Excel文件,这在数据分析、报表生成以及数据交换等场景中非常常见。JavaScript,尽管主要用在前端,但在与后端C#交互时也扮演着重要角色,特别是在处理动态数据和用户交互时。 1...

    C# 将数据导出到excel模板 自定义字段

    本主题聚焦于如何利用C#将数据导出到Excel模板,并自定义字段,这是一个常见的需求,尤其是在数据分析、报告生成和数据共享的场景中。 在C#中,我们可以利用各种库来操作Excel,如EPPlus、NPOI或Microsoft.Office....

    C# 数据导出到EXCUEL

    标题中的"C# 数据导出到EXCEL"是一个常见的IT...总的来说,C#数据导出到Excel涉及的技能包括C#编程、文件操作、数据处理、以及对Excel特性的理解。开发者需要根据实际需求选择合适的方法,确保数据导出的效率和灵活性。

Global site tag (gtag.js) - Google Analytics