<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WinForm下DataGridView導出Excel的實現

      WinForm下DataGridView導出Excel的實現
       
      1.說明:導出的效率說不上很高,但至少是可以接收的.參考網上很多高效導出Excel的方法,實現到時能夠實現的,導出速度也很快,不過缺陷在與不能很好的進行單元格的格式化,比如上圖中的"拼音碼"字段中的值"000000000012120",在導出后就顯示"12120",挺郁悶的!o(∩_∩)o,廢話不說了,進入正題.......
      2.首先添加Excel引用
       
      3.實現代碼

      /// <summary>
              /// DataGridView導出Excel
              /// </summary>
              /// <param name="strCaption">Excel文件中的標題</param>
              /// <param name="myDGV">DataGridView 控件</param>
              /// <returns>0:成功;1:DataGridView中無記錄;2:Excel無法啟動;9999:異常錯誤</returns>
              private int ExportExcel(string strCaption, DataGridView myDGV)
              {
                  int result = 9999;
                  // 列索引,行索引,總列數,總行數
                  int ColIndex = 0;
                  int RowIndex = 0;
                  int ColCount = myDGV.ColumnCount;
                  int RowCount = myDGV.RowCount;
      
                  if (myDGV.RowCount == 0)
                  {
                      result = 1;
                  }
      
                  // 創建Excel對象
                  Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                  if (xlApp == null)
                  {
                      result = 2;
                  }
                  try
                  {
                      // 創建Excel工作薄
                      Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
                      Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
                      // 設置標題
                      Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, ColCount]); //標題所占的單元格數與DataGridView中的列數相同
                      range.MergeCells = true;
                      xlApp.ActiveCell.FormulaR1C1 = strCaption;
                      xlApp.ActiveCell.Font.Size = 20;
                      xlApp.ActiveCell.Font.Bold = true;
                      xlApp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
                      // 創建緩存數據
                      object[,] objData = new object[RowCount + 1, ColCount];
                      //獲取列標題
                      foreach (DataGridViewColumn col in myDGV.Columns)
                      {
                          objData[RowIndex, ColIndex++] = col.HeaderText;
                      }
                      // 獲取數據
                      for (RowIndex = 1; RowIndex < RowCount; RowIndex++)
                      {
                          for (ColIndex = 0; ColIndex < ColCount; ColIndex++)
                          {
                              if (myDGV[ColIndex, RowIndex - 1].ValueType == typeof(string) 
                                  || myDGV[ColIndex, RowIndex - 1].ValueType == typeof(DateTime))//這里就是驗證DataGridView單元格中的類型,如果是string或是DataTime類型,則在放入緩存時在該內容前加入" ";
                              {
                                  objData[RowIndex, ColIndex] = "" + myDGV[ColIndex, RowIndex - 1].Value;
                              }
                              else
                              {
                                  objData[RowIndex, ColIndex] = myDGV[ColIndex, RowIndex - 1].Value;
                              }
                          }
                          System.Windows.Forms.Application.DoEvents();
                      }
                      // 寫入Excel
                      range = xlSheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[RowCount, ColCount]);
                      range.Value2 = objData;
      
                      //保存
                      xlBook.Saved = true;
                      xlBook.SaveCopyAs("C://測試" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
                      //返回值
                      result = 0;
                  }
                  catch (Exception err)
                  {
                      result = 9999;
                  }
                  finally
                  {
                      xlApp.Quit();
                      GC.Collect(); //強制回收
                  }
                  return result;
              } 

       

      4.調用方法(上圖中"生成Excel文件"按鈕的onClick事件)

              private void button4_Click(object sender, EventArgs e)
              {           
                  int result = this.ExportExcel("測試", this.dataGridView1); //this.dataGridView1:DataGridView控件
                  MessageBox.Show(result.ToString());
              }

       

      引用Microsoft.Office.Interop.Excel出現的問題

      08-06-11 14:41   View:5700


      操作背景:asp.net操作Excel

      出現問題:在本地添加引用(com):Microsoft Office 11.0 Object Library,并寫好程序調試正常,部署到服務器時,出現異常 Excel.Application不是對象.

      初步診斷:服務器沒有安裝Excel組件

      第一步嘗試解決:對服務器安裝Excel等Office組件,進一步測試程序:失敗!

      第二步嘗試解決:將Excel.exe生成Interop.Excel.dll,然后用sdk引用該Dll,編譯成功,測試程序:成功!

      原因:本地引用的com不會在程序的bin目錄生成dll文件,而程序是根據路徑在尋找dll的.部署到服務器上時,假如Excel等dll與本地路徑不一致,將會拋出異常,定義的Excel對象肯定是不存在的.

      具體方法:

      1、如何生成Interop.Excel.dll?

           進入你的visual studio的sdk下的bin目錄,找到TlbImp.exe文件,如果沒有,請用光盤安裝此文件,詳細說明請參照MSDN。
           命令行(cmd)進入bin目錄,運行TlbImp /out:Interop.Excel.dll Office安裝目錄+Excel.exe

           此時很可能會報錯:TlbImp   error:   Unable   to   locate   input   type   library:   'c:/program files/mcrosoft offi  
        ce/office/EXCEL.EXE'
           此問題很有可能是TlbImp的bug,不支持空格式的路徑;(具體原因不明)不要緊,將Excel.exe拷貝入bin目錄,直接運行TlbImp /out:Interop.Excel.dll Excel.exe,提示“Type library imported to Interop.Excel.dll路徑”

           在bin目錄下找到Interop.Excel.dll文件。在你的visual studio里將其引用即可。

      2、如果是excel2000或excel2002怎么辦?

        如果是Excel2000,則將Excel.exe改成Excel9.olb
        Excel2002同2003

      3、各種版本的引用組件參數如下:

      文件/版本 Interop.Excel.dll Interop.Office.dll Interop.VBIDE.dll 添加引用/COM組件
      2000 V1.3.0.0 V2.1.0.0 V5.3.0.0 Microsoft Excel 9.0 Object Library(EXCEL9.OLB)
      2002(XP) V1.4.0.0 V2.2.0.0 V5.3.0.0 Microsoft Excel 10.0 Object Library(Excel.EXE文件)
      2003 V1.5.0.0 V2.3.0.0 V5.3.0.0 Microsoft Excel 11.0 Object Library(Excel.EXE文件)

       

      posted @ 2009-07-08 15:27  .NET快速開發框架  閱讀(2687)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美人成精品网站播放| 亚洲精品久久国产高清| 国产精品久久久久影院老司| 乱女乱妇熟女熟妇综合网| 久久精品国产国产精品四凭 | 最新亚洲人成无码WWW| 欧美午夜精品久久久久久浪潮| 天堂…中文在线最新版在线| 欧美人妻在线一区二区| 亚洲avav天堂av在线网爱情| 色噜噜在线视频免费观看| 国产精品中文字幕久久| 漂亮人妻中文字幕丝袜| 尤物国精品午夜福利视频| 一区二区三区av天堂| 四虎国产成人永久精品免费| 国产精品成| 精品91在线| 色综合热无码热国产| 国产亚洲精品日韩av在| 宝坻区| 一区二区精品久久蜜精品| 亚洲国产成人久久一区久久| 爱情岛亚洲论坛成人网站| 欧美私人情侣网站| 国产区成人精品视频| 国产精品麻豆va在线播放| 虎白女粉嫩尤物福利视频| 国产成人片无码视频| 国产熟睡乱子伦视频在线播放| 成年无码av片完整版| 精品国产品香蕉在线| 94人妻少妇偷人精品| 九九热免费公开视频在线| 丁香色婷婷国产精品视频| 日韩精品中文字一区二区| 无码日韩人妻精品久久蜜桃| 国产精品毛片一区视频播| 狠狠干| 免费视频欧美无人区码| 岛国岛国免费v片在线观看|