閱讀84 返回首頁    go 技術社區[雲棲]


把指定的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)
     {
     string[] im=imp.Split("|".ToCharArray());
     ws.Cells[locR+1+y,locC+n2]=dr[im[1].ToUpper()];
     n2+=1;  
     }
    }
   }
  }


最後更新:2017-04-02 00:06:23

  上一篇:go 狀態對象:數據庫的替代者
  下一篇:go Pro Javascript Techniques第五章: 文檔對象模型