C#導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel的通用類源碼

下面內(nèi)容是關(guān)于C#導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel的通用類的內(nèi)容交洗。

public class ExcelIO

{

? ? private int _ReturnStatus;

? ? private string _ReturnMessage;

? ? public int ReturnStatus

? ? {

? ? ? ? get{return _ReturnStatus;}

? ? }

? ? public string ReturnMessage

? ? {

? ? ? ? get{return _ReturnMessage;}

? ? }

? ? public ExcelIO()

? ? {

? ? }

? ? public DataSet ImportExcel(string fileName)

? ? {

? ? ? ? Excel.Application xlApp=new Excel.ApplicationClass();? ? ? ? ?

? ? ? ? if(xlApp==null)

? ? ? ? {

? ? ? ? ? ? _ReturnStatus = -1;

? ? ? ? ? ? _ReturnMessage = "無法創(chuàng)建Excel對象荠瘪,可能您的計算機未安裝Excel";

? ? ? ? ? ? return null;

? ? ? ? }? ? ?

? ? ? ? Excel.Workbook workbook;? ? ? ? ? ? ? ?

? ? ? ? try

? ? ? ? {

? ? ? ? ? ? workbook = xlApp.Workbooks.Open(fileName,0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, 1, 0);

? ? ? ? }

? ? ? ? catch

? ? ? ? {

? ? ? ? ? ? _ReturnStatus = -1;

? ? ? ? ? ? _ReturnMessage = "Excel文件處于打開狀態(tài)并淋,請保存關(guān)閉";

? ? ? ? ? ? return null;

? ? ? ? }? ? ?


? ? ? ? int n = workbook.Worksheets.Count;

? ? ? ? string[] SheetSet = new string[n];

? ? ? ? System.Collections.ArrayList al = new System.Collections.ArrayList();

? ? ? ? for(int i=1; i<=n; i++)

? ? ? ? {

? ? ? ? ? ? SheetSet[i-1] = ((Excel.Worksheet)workbook.Worksheets[i]).Name;

? ? ? ? }


? ? ? ? workbook.Close(null,null,null);? ? ? ?

? ? ? ? xlApp.Quit();

? ? ? ? if(workbook != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);

? ? ? ? ? ? workbook = null;

? ? ? ? }

? ? ? ? if(xlApp != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

? ? ? ? ? ? xlApp = null;

? ? ? ? }?

? ? ? ? GC.Collect();


? ? ? ? DataSet ds = new DataSet();? ? ? ?

? ? ? ? string connStr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+ fileName +";Extended Properties=Excel 8.0" ;

? ? ? ? using(OleDbConnection conn = new OleDbConnection (connStr))

? ? ? ? {

? ? ? ? ? ? conn.Open();

? ? ? ? ? ? OleDbDataAdapter da;

? ? ? ? ? ? for(int i=1; i<=n; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? da = new OleDbDataAdapter(sql,conn);

? ? ? ? ? ? ? ? da.Fill(ds,SheetSet[i-1]);?

? ? ? ? ? ? ? ? da.Dispose();

? ? ? ? ? ? }? ? ? ? ? ? ?

? ? ? ? ? ? conn.Close();

? ? ? ? ? ? conn.Dispose();

? ? ? ? }? ? ? ? ? ? ?

? ? ? ? return ds;

? ? }

? ? public bool ExportExcel(string reportName,DataTable dt,string saveFileName)

? ? {

? ? ? ? if(dt==null)

? ? ? ? {

? ? ? ? ? ? _ReturnStatus = -1;

? ? ? ? ? ? _ReturnMessage = "數(shù)據(jù)集為空厅瞎!";

? ? ? ? ? ? return false;? ? ? ? ?

? ? ? ? }

? ? ? ? bool fileSaved=false;

? ? ? ? Excel.Application xlApp=new Excel.ApplicationClass();?

? ? ? ? if(xlApp==null)

? ? ? ? {

? ? ? ? ? ? _ReturnStatus = -1;

? ? ? ? ? ? _ReturnMessage = "無法創(chuàng)建Excel對象,可能您的計算機未安裝Excel";

? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? Excel.Workbooks workbooks=xlApp.Workbooks;

? ? ? ? Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

? ? ? ? worksheet.Cells.Font.Size = 10;

? ? ? ? Excel.Range range;

? ? ? ? long totalCount=dt.Rows.Count;

? ? ? ? long rowRead=0;

? ? ? ? float percent=0;

? ? ? ? worksheet.Cells[1,1]=reportName;

? ? ? ? ((Excel.Range)worksheet.Cells[1,1]).Font.Size = 12;

? ? ? ? ((Excel.Range)worksheet.Cells[1,1]).Font.Bold = true;

? ? ? ? for(int i=0;i<dt.Columns.Count;i++)

? ? ? ? {

? ? ? ? ? ? worksheet.Cells[2,i+1]=dt.Columns[i].ColumnName;

? ? ? ? ? ? range=(Excel.Range)worksheet.Cells[2,i+1];

? ? ? ? ? ? range.Interior.ColorIndex = 15;

? ? ? ? ? ? range.Font.Bold = true;

? ? ? ? }

? ? ? ? for(int r=0;r<dt.Rows.Count;r++)

? ? ? ? {

? ? ? ? ? ? for(int i=0;i<dt.Columns.Count;i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? worksheet.Cells[r+3,i+1]=dt.Rows[r][i].ToString();

? ? ? ? ? ? }

? ? ? ? ? ? rowRead++;

? ? ? ? }


? ? ? ? range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[dt.Rows.Count+2,dt.Columns.Count]);

? ? ? ? range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);

? ? ? ? if( dt.Rows.Count > 0)

? ? ? ? {

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;

? ? ? ? }

? ? ? ? if(dt.Columns.Count>1)

? ? ? ? {

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

? ? ? ? ? ? range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

? ? ? ? }

? ? ? ? if(saveFileName!="")

? ? ? ? {

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? workbook.Saved =true;

? ? ? ? ? ? ? ? workbook.SaveCopyAs(saveFileName);

? ? ? ? ? ? ? ? fileSaved=true;

? ? ? ? ? ? }

? ? ? ? ? ? catch(Exception ex)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? fileSaved=false;

? ? ? ? ? ? ? ? _ReturnStatus = -1;

? ? ? ? ? ? ? ? _ReturnMessage = "導(dǎo)出文件時出錯,文件可能正被打開傲武!n"+ex.Message;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? ? fileSaved=false;

? ? ? ? }? ? ? ? ?


? ? ? ? if(range != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(range);

? ? ? ? ? ? range = null;

? ? ? ? }

? ? ? ? if(worksheet != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);

? ? ? ? ? ? worksheet = null;

? ? ? ? }

? ? ? ? if(workbook != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);

? ? ? ? ? ? workbook = null;

? ? ? ? }

? ? ? ? if(workbooks != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);

? ? ? ? ? ? workbooks = null;

? ? ? ? }? ? ? ? ? ? ?

? ? ? ? xlApp.Application.Workbooks.Close();

? ? ? ? xlApp.Quit();

? ? ? ? if(xlApp != null)

? ? ? ? {

? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

? ? ? ? ? ? xlApp = null;

? ? ? ? }

? ? ? ? GC.Collect();

? ? ? ? return fileSaved;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末币厕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子埂蕊,更是在濱河造成了極大的恐慌往弓,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓄氧,死亡現(xiàn)場離奇詭異函似,居然都是意外死亡,警方通過查閱死者的電腦和手機喉童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門撇寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事蔑担∨品希” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵啤握,是天一觀的道長鸟缕。 經(jīng)常有香客問我,道長恨统,這世上最難降的妖魔是什么叁扫? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮畜埋,結(jié)果婚禮上莫绣,老公的妹妹穿的比我還像新娘。我一直安慰自己悠鞍,他們只是感情好对室,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咖祭,像睡著了一般掩宜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上么翰,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天牺汤,我揣著相機與錄音,去河邊找鬼浩嫌。 笑死檐迟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的码耐。 我是一名探鬼主播追迟,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骚腥!你這毒婦竟也來了敦间?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤束铭,失蹤者是張志新(化名)和其女友劉穎廓块,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體契沫,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡带猴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了埠褪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钞速,靈堂內(nèi)的尸體忽然破棺而出贷掖,到底是詐尸還是另有隱情,我是刑警寧澤渴语,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布苹威,位于F島的核電站,受9級特大地震影響驾凶,放射性物質(zhì)發(fā)生泄漏牙甫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一调违、第九天 我趴在偏房一處隱蔽的房頂上張望窟哺。 院中可真熱鬧,春花似錦技肩、人聲如沸且轨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旋奢。三九已至,卻和暖如春然痊,著一層夾襖步出監(jiān)牢的瞬間至朗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工剧浸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锹引,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓辛蚊,卻偏偏與公主長得像粤蝎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袋马,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容