jianglanshui

           

          C#でExcelファイルをPDFに変換するサンプル

          namespace XXXX
          {
              /// <summary>
              /// Excelファイルを保存する機能を提供します。
              /// </summary>
              public static class ExcelToPdf
              {
                  /// <summary>
                  /// ExcelファイルをPDFとして保存します。
                  /// </summary>
                  /// <param name="excelFilePathName">Excelファイルのパス付きファイル名。</param>
                  /// <param name="saveAsPathName">保存するPDFのパス付きファイル名。</param>
                  /// <remarks>
                  /// <para>
                  /// Excel 2007がインストールされている必要があります。
                  /// </para>
                  /// <para>
                  /// Office 2007のSP2、またはPDF保存アドインがインストールされている必要があります。</ br>
                  /// http://support.microsoft.com/kb/953195/ja</ br>
                  /// http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyId=F1FC413C-6D89-4F15-991B-63B07BA5F2E5&displaylang=ja
                  /// </para>
                  /// </remarks>
                  public static void SaveAsPdf(string excelFilePathName, string saveAsPathName)
                  {
                      Application application = null;
                      Workbooks workbooks = null;
                      Workbook workbook = null;

                      try
                      {
                          application = new Application();

                          /*
                           * application.Workbooks.Open(...は、Workbooksオブジェクトの解放処理ができないので不可。
                           * 必ず変數(shù)経由でComRelease.FinalReleaseComObjectsを呼び出すこと。
                           */
                          workbooks = application.Workbooks;

                          workbook = workbooks.Open(
                              excelFilePathName, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                              , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                              , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                          // http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.workbook.exportasfixedformat(v=vs.90).aspx
                          workbook.ExportAsFixedFormat(
                              XlFixedFormatType.xlTypePDF,
                              saveAsPathName,
                              XlFixedFormatQuality.xlQualityStandard,
                              true,
                              true,
                              Type.Missing,
                              Type.Missing,
                              false,
                              Type.Missing);
                      }
                      finally
                      {
                          if (workbook != null)
                          {
                              try
                              {
                                  workbook.Close(true, Type.Missing, Type.Missing);
                              }
                              catch
                              {
                              }
                          }

                          if (application != null)
                          {
                              try
                              {
                                  application.Quit();
                              }
                              catch
                              {
                              }
                          }

                          ComRelease.FinalReleaseComObjects(workbook, workbooks, application);
                      }
                  }
              }

              /// <summary>
              /// COMオブジェクトを解放する機能を提供します。
              /// </summary>
              public static class ComRelease
              {
                  /// <summary>
                  /// 複數(shù)のCOMオブジェクトの參照カウントを0までデクリメントし、解放します。
                  /// </summary>
                  /// <param name="objects">解放するCOMオブジェクトの配列。</param>
                  /// <remarks>解放は配列の要素順に行います。</remarks>
                  public static void FinalReleaseComObjects(params object[] objects)
                  {
                      foreach (object o in objects)
                      {
                          try
                          {
                              if (o == null)
                                  continue;
                              if (Marshal.IsComObject(o) == false)
                                  continue;
                              Marshal.FinalReleaseComObject(o);
                          }
                          catch (Exception)
                          {
                          }
                      }
                  }
              }

          }

            private void button13_Click(object sender, EventArgs e)
                  {
                      const string Dir = @"C:\";
                      ExcelToPdf.SaveAsPdf(Path.Combine(Dir, "20121219163550.xlsx"), Path.Combine(Dir, "20121219163550.pdf"));

                  }




          posted on 2013-02-05 08:11 老蔣 閱讀(2901) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安西县| 长武县| 吴堡县| 新余市| 漠河县| 拉孜县| 天等县| 新乐市| 甘洛县| 长阳| 太湖县| 拉孜县| 环江| 太仆寺旗| 荣昌县| 舟曲县| 高台县| 栾城县| 文水县| 娄烦县| 斗六市| 沧州市| 沽源县| 阿克陶县| 中超| 绵阳市| 阿巴嘎旗| 宁强县| 来安县| 大连市| 巴塘县| 芜湖县| 综艺| 日照市| 呼图壁县| 监利县| 客服| 丰原市| 济宁市| 平罗县| 唐海县|