日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

[转]C#导出到EXCEL

發布時間:2025/6/15 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]C#导出到EXCEL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?[轉]C#導出到EXCEL??
?
[原]
http://community.csdn.net/Expert/topic/4570/4570895.xml?temp=1.687258E-02

?

1.首先聲明,這些方法也都是本人搜集的資料,然后為已所用,程序中不足之處,還請高手指點.
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,Access.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;

這些方法都沒有關閉Excel進程,這種資料很多,在此不多寫了,希望這些能對一些人帶來方便.

總結

以上是生活随笔為你收集整理的[转]C#导出到EXCEL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线a| 欧美一级爆毛片 | 美女又爽又黄免费 | av片久久 | 成人午夜精品福利 | 亚洲一区精品视频在线观看 | japanese24hdxxxx日韩 | 亚洲草逼| 日日夜夜狠狠爱 | 一区二区欧美在线 | 午夜黄色剧场 | 国产日韩一区二区在线 | 一本大道综合伊人精品热热 | 久久色av| 一级大毛片 | 免费成人黄色 | 国产成人久久婷婷精品流白浆 | 免费视频www在线观看网站 | 亚洲怡红院av | 国产精品久久久久久吹潮 | 加勒比hezyo黑人专区 | 国产精品suv一区二区 | 狠狠干中文字幕 | 日韩精品视频一区二区三区 | 国产中文字字幕乱码无限 | 久久久久女人精品毛片九一 | 青青草超碰 | 天天爽视频 | 亚洲一区二区在线免费 | 91精品婷婷国产综合久久蝌蚪 | 国产精品一卡二卡在线观看 | 欧美日韩激情 | 亚洲AV不卡无码一区二区三区 | 无码日韩人妻精品久久蜜桃 | 成人三级图片 | 男人天堂视频网 | 亚洲色图网址 | 一级黄色大片免费看 | 操皮视频 | 草民午夜理伦三级 | 色婷婷小说 | 欧美日韩五月天 | 草草影院国产第一页 | av片免费在线 | 久久久久久久影院 | 大又大粗又爽又黄少妇毛片 | 日韩久久久久 | 鲁鲁久久 | 色呦呦中文字幕 | 在线观看羞羞漫画 | 蜜臀在线一区二区三区 | 久久久久人 | 三日本三级少妇三级99 | 国产高清一区二区 | 欧美操穴视频 | 国产淫片av片久久久久久 | 91嫩草视频在线观看 | a级网站在线观看 | av日日夜夜| 国产精品12 | 啪啪的网站 | 黄视频网站免费看 | 激情宗合| 国产亚洲欧美一区二区三区 | 老熟妇仑乱一区二区视频 | 久久免费影院 | 男女高h视频| 中文在线视频 | 亚洲第一免费网站 | 男人的天堂影院 | 精品视频久久久久久久 | 男人干女人视频 | 中文字幕在线视频第一页 | 欧美日韩视频一区二区三区 | 六月综合| 天天操狠狠操夜夜操 | 国产在线第一页 | 日韩av网站在线观看 | 射黄视频 | 亚洲熟女少妇一区二区 | 日本在线小视频 | 香港三级韩国三级日本三级 | 国产女人18毛片水真多1 | 国产婷婷精品 | 污污网站在线免费观看 | 超碰在线小说 | 综合色在线观看 | 国产乱子伦视频一区二区三区 | 天天干,夜夜爽 | 在线不卡| 中文字幕无码不卡免费视频 | 一区二区三区四区免费 | 亚洲男人影院 | 性猛交╳xxx乱大交 偷偷操不一样的久久 | 五十路在线视频 | 一级a毛片 | 精品国产一区二区三区久久久久久 | 久久久噜噜噜久久久 | 色视频国产 |