溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c#怎么調(diào)用SSIS Package將數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入

發(fā)布時(shí)間:2021-11-24 13:52:00 來(lái)源:億速云 閱讀:189 作者:iii 欄目:數(shù)據(jù)庫(kù)

本篇內(nèi)容主要講解“c#怎么調(diào)用SSIS Package將數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“c#怎么調(diào)用SSIS Package將數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入”吧!

(一)背景

     如何將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到EXCEL文件中,我們經(jīng)常會(huì)碰到。本文將比較常用的幾種方法,并且將詳細(xì)講解基于SSIS的用法。筆者認(rèn)為,基于SSIS的方法,對(duì)于海量數(shù)據(jù)來(lái)說(shuō),應(yīng)該是效率最好的一種方法。個(gè)人認(rèn)為,這是一種值得推薦的方法,因此,本人決定將本人所知道的、以及自己總結(jié)的完整的寫出來(lái),一是提高一下自己的寫作以及表達(dá)能力,二是讓更多的讀者能夠在具體的應(yīng)用中如何解決將海量數(shù)據(jù)導(dǎo)入到Excel中的效率問(wèn)題。

(二)方法的比較

    方案一:SSIS(SQL Server數(shù)據(jù)集成服務(wù)),追求效率,Package制作過(guò)程復(fù)雜一點(diǎn)(容易出錯(cuò))。

    方案二:采用COM.Excel組件。一般,對(duì)于操作能夠基本滿足,但對(duì)于數(shù)據(jù)量大時(shí)可能會(huì)慢點(diǎn)。下面的代碼,本人稍微修改了下,如下所示:該方法主要是對(duì)單元格一個(gè)一個(gè)的循環(huán)寫入,基本方法為 excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref str, ref cellformat)。當(dāng)數(shù)據(jù)量大時(shí),肯定效率還是有影響的。

 
 public string DataExcels(System.Data.DataTable[] dts, string strTitle, string FilePath, Hashtable nameList,string[] titles)
        {
            COM.Excel.cExcelFile excel = new COM.Excel.cExcelFile();
            //當(dāng)文件大于10的時(shí)候   清空所有文件!??!
            ClearFile(FilePath);
            //文件名
            string filename = strTitle+ DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
            //生成相應(yīng)的文件
            excel.CreateFile(FilePath + filename);
            //設(shè)置margin
            COM.Excel.cExcelFile.MarginTypes mt1 = COM.Excel.cExcelFile.MarginTypes.xlsTopMargin;
            COM.Excel.cExcelFile.MarginTypes mt2 = COM.Excel.cExcelFile.MarginTypes.xlsLeftMargin;
            COM.Excel.cExcelFile.MarginTypes mt3 = COM.Excel.cExcelFile.MarginTypes.xlsRightMargin;
            COM.Excel.cExcelFile.MarginTypes mt4 = COM.Excel.cExcelFile.MarginTypes.xlsBottomMargin;
            double height = 2.2;
            excel.SetMargin(ref mt1, ref height);
            excel.SetMargin(ref mt2, ref height);
            excel.SetMargin(ref mt3, ref height);
            excel.SetMargin(ref mt4, ref height);
            //設(shè)置字體!!
            COM.Excel.cExcelFile.FontFormatting ff = COM.Excel.cExcelFile.FontFormatting.xlsNoFormat;
            string font = "宋體";
            short fontsize = 14;
            excel.SetFont(ref font, ref fontsize, ref ff);
            byte b1 = 1, b2 = 12;
            short s3 = 12;
            excel.SetColumnWidth(ref b1, ref b2, ref s3);

            string header = "頁(yè)眉";
            string footer = "頁(yè)腳";
            excel.SetHeader(ref header);
            excel.SetFooter(ref footer);

            COM.Excel.cExcelFile.ValueTypes vt = COM.Excel.cExcelFile.ValueTypes.xlsText;
            COM.Excel.cExcelFile.CellFont cf = COM.Excel.cExcelFile.CellFont.xlsFont0;
            COM.Excel.cExcelFile.CellAlignment ca = COM.Excel.cExcelFile.CellAlignment.xlsCentreAlign;
            COM.Excel.cExcelFile.CellHiddenLocked chl = COM.Excel.cExcelFile.CellHiddenLocked.xlsNormal;
            // 報(bào)表標(biāo)題
            int cellformat = 1;     
            int rowIndex = 1;//起始行
            int colIndex = 0;
            foreach (System.Data.DataTable dt in dts)
            {              
                colIndex = 0;
                //取得列標(biāo)題               
                foreach (DataColumn colhead in dt.Columns)
                {
                    colIndex++;
                    string name = colhead.ColumnName.Trim();
                    object namestr = (object)name;
                    excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref namestr, ref cellformat);
                }
                //取得表格中的數(shù)據(jù)           
                foreach (DataRow row in dt.Rows)
                {        

到此,相信大家對(duì)“c#怎么調(diào)用SSIS Package將數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI