开发学院数据库MSSQL Server DataSet导出到Excel比较完整的解决方案(二)--服... 阅读

DataSet导出到Excel比较完整的解决方案(二)--服务器端生成文件(downmoon) (上)

 2009-01-16 10:19:13 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤秴顪冮妶鍡楀闁告鍥х叀濠㈣泛谩閻斿吋鐓ラ悗锝庡厴閸嬫挻绻濆顓涙嫼閻熸粎澧楃敮鎺撶娴煎瓨鐓曢柟鎯ь嚟閳藉鏌嶇紒妯荤叆妞ゎ偅绻堥幊婊呭枈濡顏归梻鍌欑閹诧紕绮欓幋锔哄亼闁哄鍨熼弸鏃堟煛閸愶絽浜剧紓浣虹帛缁嬫挻绂掗敃鍌氱<婵﹩鍓﹂悗鎶芥⒒娴e摜锛嶇紒顕呭灦楠炴垿宕堕鍌氱ウ闁诲函缍嗘禍鏍绩娴犲鐓欓梺顓ㄧ畱婢ь垱銇勯弬鍨偓瑙勭┍婵犲洦鍊锋い蹇撳閸嬫捇寮借濞兼牕鈹戦悩瀹犲闁稿被鍔庨幉姝岀疀濞戞ḿ鐤呴梺鍦檸閸犳寮查幖浣圭叆闁绘洖鍊圭€氾拷
核心提示:在前一篇文章中,介绍了DataSet导出到Excel时客户端生成文件的几种思路,DataSet导出到Excel比较完整的解决方案(二)--服务器端生成文件(downmoon) (上),接着往下说,服务器端生成文件,用户直接下载,应该格式是可以保证的!于是直接调用Excel的API生成

在前一篇文章中,介绍了DataSet导出到Excel时客户端生成文件的几种思路,接着往下说,服务器端生成文件,用户直接下载,应该格式是可以保证的!

于是直接调用Excel的API生成。代码如下:

DataSetToLocalExcel

public static void DataSetToLocalExcel(DataSet dataSet, string outputPath, bool deleteOldFile)
    {
      if (deleteOldFile)
      {
        if (System.IO.File.Exists(outputPath)) { System.IO.File.Delete(outputPath); }
      }
      // Create the Excel Application object
      ApplicationClass excelApp = new ApplicationClass();
  
      // Create a new Excel Workbook
      Workbook excelWorkbook = excelApp.Workbooks.Add(Type.Missing);
  
      int sheetIndex = 0;
  
      // Copy each DataTable
      foreach (System.Data.DataTable dt in dataSet.Tables)
      {
  
        // Copy the DataTable to an object array
        object[,] rawData = new object[dt.Rows.Count + 1, dt.Columns.Count];
  
        // Copy the column names to the first row of the object array
        for (int col = 0; col < dt.Columns.Count; col++)
        {
          rawData[0, col] = dt.Columns[col].ColumnName;
        }
  
        // Copy the values to the object array
        for (int col = 0; col < dt.Columns.Count; col++)
        {
          for (int row = 0; row < dt.Rows.Count; row++)
          {
            rawData[row + 1, col] = dt.Rows[row].ItemArray[col];
          }
        }
  
        // Calculate the final column letter
        string finalColLetter = string.Empty;
        string colCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        int colCharsetLen = colCharset.Length;
  
        if (dt.Columns.Count > colCharsetLen)
        {
          finalColLetter = colCharset.Substring(
            (dt.Columns.Count - 1) / colCharsetLen - 1, 1);
        }
  
        finalColLetter += colCharset.Substring(
            (dt.Columns.Count - 1) % colCharsetLen, 1);
  
        // Create a new Sheet
        Worksheet excelSheet = (Worksheet)excelWorkbook.Sheets.Add(
          excelWorkbook.Sheets.get_Item(++sheetIndex),
          Type.Missing, 1, XlSheetType.xlWorksheet);
  
        excelSheet.Name = dt.TableName;
  
        // Fast data export to Excel
        string excelRange = string.Format("A1:{0}{1}",
          finalColLetter, dt.Rows.Count + 1);
  
        excelSheet.get_Range(excelRange, Type.Missing).Value2 = rawData;
  
        // Mark the first row as BOLD
        ((Range)excelSheet.Rows[1, Type.Missing]).Font.Bold = true;
      }
      //excelApp.Application.AlertBeforeOverwriting = false;
      excelApp.Application.DisplayAlerts = false;
      // Save and Close the Workbook
      excelWorkbook.SaveAs(outputPath, XlFileFormat.xlWorkbookNormal, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
      excelWorkbook.Close(true, Type.Missing, Type.Missing);
      excelWorkbook = null;
  
      // Release the Application object
      excelApp.Quit();
      excelApp = null;
  
      // Collect the unreferenced objects
      GC.Collect();
      GC.WaitForPendingFinalizers();
  
    }

1 2 3  下一页

Tags:DataSet 导出 Excel

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读