7

.docx 形式のファイルが約 400 個あり、それぞれの長さを #pages で判断する必要があります。

そのため、ドキュメントを含むフォルダーを選択するための C# コードを記述し、各 .docx ファイルの #pages を返したいと考えています。

4

4 に答える 4

20

これを行う方法を説明するために、.NET 4.5 といくつかの Microsoft Office 2013 COM オブジェクトに基づいて C# コンソール アプリケーションを作成しました。

using System;
using Microsoft.Office.Interop.Word;

namespace WordDocStats
{
    class Program
    {
        // Based on: http://www.dotnetperls.com/word
        static void Main(string[] args)
        {
            // Open a doc file.
            var application = new Application();
            var document = application.Documents.Open(@"C:\Users\MyName\Documents\word.docx");

            // Get the page count.
            var numberOfPages = document.ComputeStatistics(WdStatistic.wdStatisticPages, false);

            // Print out the result.
            Console.WriteLine(String.Format("Total number of pages in document: {0}", numberOfPages));

            // Close word.
            application.Quit();
        }
    }
}

これが機能するには、次の COM オブジェクトを参照する必要があります。

  • Microsoft Office Object Library (私の場合はバージョン 15.0)
  • Microsoft Word Object Library (私の場合はバージョン 15.0)

2 つの COM オブジェクトにより、必要な名前空間にアクセスできます。

正しいアセンブリを参照する方法の詳細については、「3. 作業環境の設定:」セクションを参照してください: http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx

C# による Word オートメーションの簡単で​​一般的な概要については、http: //www.dotnetperls.com/wordを参照してください。

- アップデート

Document.ComputeStatisticsページ数にアクセスできる方法に関するドキュメントは、 http: //msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.computestatistics.aspxにあります。

ドキュメントに見られるように、このメソッドは、WdStatisticさまざまな種類の統計 (ページの合計量など) を取得できる列挙型を取ります。アクセスできる統計の全範囲の概要については、http://msdn.microsoft.com/en-us/library/microsoft.office.interop にある列挙型のドキュメントを参照してくださいWdStatistic.word.wdstatistic.aspx

于 2012-09-09T13:59:39.700 に答える
4

C:\Program Files\Open XML SDK\V2.0\lib で dll を見つけることができる DocumentFormat.OpenXml.dll を使用します。

サンプルコード:

DocumentFormat.OpenXml.Packaging.WordprocessingDocument doc = DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(docxPath, false);
            MessageBox.Show(doc.ExtendedFilePropertiesPart.Properties.Pages.InnerText.ToString());

DocumentFormat.OpenXml.Packaging.WordprocessingDocument クラスを使用するには、プロジェクトに次の参照を追加する必要があります

DocumentFormat.OpenXml.dll & Windowsbase.dll

于 2012-09-09T14:07:47.713 に答える
0

Spire.Docのページ数は無料です:)

using Spire.Doc;
    public sealed class TestNcWorker
    {
        [TestMethod]
        public void DocTemplate3851PageCount()
        {
            var docTemplate3851 = Resource.DocTemplate3851;
            using (var ms = new MemoryStream())
            {
                ms.Write(docTemplate3851, 0, docTemplate3851.Length);
                Document document = new Document();
                document.LoadFromStream(ms, FileFormat.Docx);
                Assert.AreEqual(2,document.PageCount);
            }
            var barCoder = new BarcodeAttacher("8429053", "1319123", "HR3514");
            var barcoded = barCoder.AttachBarcode(docTemplate3851).Value;
            using (var ms = new MemoryStream())
            {
                ms.Write(barcoded, 0, barcoded.Length);
                Document document = new Document();
                document.LoadFromStream(ms, FileFormat.Docx);
                Assert.AreEqual( 3, document.PageCount);

            }
        }
    }
于 2019-06-25T17:16:32.757 に答える