一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C# 講解五種導(dǎo)出access數(shù)據(jù)到Excel文件格式中-程序開發(fā)-紅黑聯(lián)盟

 大卷風(fēng) 2010-10-06
C# 講解五種導(dǎo)出access數(shù)據(jù)到Excel文件格式中
文章錄入:7747.Net    責(zé)任編輯:7747.Net  25

【字體:

1.首先聲明,這些方法也都是本人搜集的資料,然后為已所用,程序中不足之處,還請高手指點(diǎn). 這些方法都沒有關(guān)閉Excel進(jìn)程。
2.網(wǎng)上有好多關(guān)于用SQL語句導(dǎo)入導(dǎo)出的例子,這里不再重復(fù)寫了。

方法1:調(diào)用com組件,導(dǎo)出access數(shù)據(jù)到Excel,就是直接調(diào)用access的導(dǎo)出功能,此方法速度超級快
using Access;
Access.ApplicationClass oAccess = new Access.ApplicationClass();
oAccess.Visible = false;
try
{        //ACCESS9:
      oAccess.OpenCurrentDatabase("d:\\wcf.mdb",false,"");
      //導(dǎo)出到excel
oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Acce      ss.AcSpreadSheetType.acSpreadsheetTypeExcel9,"工作表名","d:\\wcf.xls",true,null,null);
     //導(dǎo)入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("導(dǎo)入成功");
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
GC.Collect();
}


方法2:此方法速度也是超級快,只不過導(dǎo)出的格式非標(biāo)準(zhǔn)的Excel格式,默認(rèn)工作表名與文件名相同
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 此方法速度較以上兩個顯得慢了一些,數(shù)據(jù)量越大越明顯
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();
//建立表結(jié)構(gòu)
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將數(shù)據(jù)插入新建的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 = "正在導(dǎo)出數(shù)據(jù),已導(dǎo)出[" 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:此方法調(diào)用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 = "正在導(dǎo)出數(shù)據(jù),已導(dǎo)出[" 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:利用剪貼板 ,有人說此方法很快,但是我用時,這種方法最慢,請高手指點(diǎn).
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 ="企業(yè)名錄";
// 取出這個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 = " ";
}
// 利用系統(tǒng)剪切板
System.Windows.Forms.Clipboard.SetDataObject("");
// 將stringBuffer放入剪切板。
System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
// 選中這個sheet頁中的第一個單元格
((Excel.Range)xlWorksheet.Cells[1,1]).Select();
// 粘貼!
xlWorksheet.Paste(oMissing,oMissing);
// 清空系統(tǒng)剪切板。
System.Windows.Forms.Clipboard.SetDataObject("");
// 保存并關(guān)閉這個工作簿。
xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges , oMissing, oMissing );
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
xlWorkbook = null;

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    亚洲中文字幕乱码亚洲| 欧美人与动牲交a精品| 国产一区二区精品高清免费 | 国产精品欧美激情在线| 欧美一区二区不卡专区| 中文字幕佐山爱一区二区免费| 亚洲欧美日韩在线中文字幕| 中文字幕有码视频熟女| 成年人视频日本大香蕉久久| 国产性情片一区二区三区| 国产黑人一区二区三区| 又大又长又粗又黄国产| 91日韩在线观看你懂的| 91久久国产福利自产拍| 大尺度剧情国产在线视频| 国语久精品在视频在线观看| 成人精品一区二区三区在线 | 绝望的校花花间淫事2| 欧美美女视频在线免费看| 99久久免费看国产精品| 精品一区二区三区人妻视频| 亚洲欧美日本成人在线| 污污黄黄的成年亚洲毛片| 日韩欧美国产高清在线| 欧美又黑又粗大又硬又爽| 丰满人妻一二三区av| 99久久免费看国产精品| 精品国产一区二区欧美| 91亚洲精品国产一区| 91亚洲精品综合久久| 日本不卡一本二本三区| 国内胖女人做爰视频有没有| 国产又粗又猛又爽色噜噜| 久久久精品日韩欧美丰满| 国产韩国日本精品视频| 久热99中文字幕视频在线| 国产av熟女一区二区三区四区| 日韩女优视频国产一区| 精品偷拍一区二区三区| 九九九热在线免费视频| 大香蕉伊人一区二区三区|