jianglanshui

           

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

          namespace XXXX
          {
              /// <summary>
              /// Excelファイルを保存する機(jī)能を提供します。
              /// </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オブジェクトを解放する機(jī)能を提供します。
              /// </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) 評(píng)論(0)  編輯  收藏


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


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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 卢氏县| 庆阳市| 霍林郭勒市| 张掖市| 濉溪县| 晋中市| 建阳市| 蓬安县| 伊通| 郁南县| 桑植县| 秀山| 玉田县| 静海县| 白山市| 东光县| 永昌县| 通江县| 芦溪县| 翼城县| 泸定县| 长兴县| 温宿县| 宜君县| 鹿邑县| 报价| 鱼台县| 垣曲县| 益阳市| 台南县| 松潘县| 社会| 砀山县| 永州市| 安多县| 元朗区| 洪洞县| 呼和浩特市| 河源市| 青海省| 新乡市|