天天看點

把指定的DataSet中的内容導出到Excel中

  /// <summary>

  /// 把指定的dataset中的内容導出到excel中.

  /// </summary>

  /// <param name="ds">ds參數為dateset對象</param>

  /// <param name="impstr">該字元串用來指定一些字段來導出,其使用格式為:aaa|aaa,bbb|bbb   小寫字元串為在excel表中顯示該字段的列标題,大寫表示字段名.不同字段使用逗号分隔.</param>

  /// <param name="locr">資料導出到excel中的開始行</param>

  /// <param name="locc">資料導出到excel中的開始列</param>

  /// <param name="titlestr">該字元串用來指定要導出的表和表的标題其格式為:aaa|aaa,bbb|bbb   小寫為該表中顯示的标題,大寫為表名稱.不同表使用逗号分隔</param>

  /// <param name="tiltelocr">顯示标題的行</param>

  /// <param name="titlelocc">顯示标題的列</param>

  /// <param name="coltitlecolorindex">列标題顔色索引</param>

  /// <example>import2excel(this.dsdata ,"使用者名|username,登入名|loginname",3,1,"使用者名清單|bill_user",1,2 ,12);</example>

  private void import2excel(system.data.dataset ds,string impstr ,int locr,int locc,string titlestr,int tiltelocr, int titlelocc,int coltitlecolorindex )

  {

   //加載excel

   microsoft.office.interop.excel.applicationclass ex=new microsoft.office.interop.excel.applicationclass();

   ex.visible=true ;//顯示excel

   if (ex==null)

   {

    //無法顯示時報錯

   messagebox.show("無法啟動 microsoft office excel,導出失敗!","import2excel", messageboxbuttons.ok,messageboxicon.stop );

   return ;

   }

   string[] tles=titlestr.split(",".tochararray());

   string[] imps=impstr.split(",".tochararray()) ;

   string[] tlbs=titlestr.split(",".tochararray ());

   //獲得工作薄

       microsoft.office.interop.excel.workbooks   wbs =ex.workbooks;

   microsoft.office.interop.excel.workbook wb= wbs.add(microsoft.office.interop.excel.xlwbatemplate.xlwbatworksheet);

   int z=0;//sheet索引

   foreach (string tblname in tlbs)

    z+=1;

    //得到表和工作表一個工作表對應一個表,

    string[] tbn=tblname.split("|".tochararray());

    system.data.datatable dt=ds.tables[tbn[1].toupper() ];

    microsoft.office.interop.excel.worksheet ws=

     (microsoft.office.interop.excel.worksheet)wb.worksheets[z];

    //工作表的第一行标題設定為該表的表名.

    //從格式字元串中去表名對應的名稱.

//    int tm1=titlestr.toupper().indexof(dt.tablename+"|")+dt.tablename.length +1;

//    string tit=titlestr.substring(tm1,titlestr.indexof(",",tm1)-tm1);

    ws.cells[tiltelocr, titlelocc]=tbn[0] ;//設定該單元格顯示的标題

    ws.name=dt.tablename ;//設定該sheet的名稱為表名.

    int n1=locc;

    //設定字段名稱

    foreach (string imp in imps)

     {

     string[] im=imp.split("|".tochararray());

      n1+=1 ;

      ws.cells[locr,  n1]=im[0];//'字段名稱

      microsoft.office.interop.excel.range rg=

           (microsoft.office.interop.excel.range)ws.cells[locr, n1];

      rg.interior.colorindex=coltitlecolorindex;

      rg.font.bold=true;

     }

    for (int y=0;y<=dt.rows.count -1;y+=1)

    {

    system.data.datarow dr=dt.rows[y];

     int n2=1;

     foreach (string imp in imps)

     ws.cells[locr+1+y,locc+n2]=dr[im[1].toupper()];

     n2+=1;  

    }

  }

繼續閱讀