🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Open XML

Open XMLは、マイクロソフト社が開発したオープンなXMLベースのオフィススイート用のファイル形式です。従来のバイナリ形式のフォーマットに代わって、XMLを用いた規格を標準ファイル形式として採用しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

1808閲覧

C# Microsoft Wordのファイル(.docx)を読込処理する

nekoyama771

総合スコア29

Open XML

Open XMLは、マイクロソフト社が開発したオープンなXMLベースのオフィススイート用のファイル形式です。従来のバイナリ形式のフォーマットに代わって、XMLを用いた規格を標準ファイル形式として採用しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/10/31 12:51

編集2022/11/01 11:05

C#でワードファイル(.docx)を読込み、一行ずつ各種の処理をしたいです。
そのため、ワードファイルを読込、辞書に一行ずつ追加したいです。
C#でそのような処理はできますでしょうか。
必要な情報にたどり着けず困っています。
よろしくお願いします。

以下のようなワードファイルから、対象支店の後に続く支店名(下記の場合「A支店」「B支店」「C支店D出張所」)を取得したいです。「<対象支店>」に続いて改行があり、「・A支店」「・B支店」「・C支店D出張所」に続いてそれぞれ改行しています。

<冒頭>
文章が続きます。文章が続きます。文章が続きます。
<対象支店>
・A支店
・B支店
・C支店D出張所
<各支店の概要>
文章が続きます。A支店では~文章が続きます。B支店では~文章が続きます。E支店では~文章が続きます。

C#

1//Word文書読込 2string filepath = @"C:\Local\Data20220901.docx"; 3using (WordprocessingDocument WordFile = 4 WordprocessingDocument.Open(filepath, false)) 5{ 6 7 int cnt = 1; 8 string line = null; 9 Dictionary<int, string> WordFileLine = new Dictionary<int, string>(); 10 using (StreamReader sr = new StreamReader(WordFile.MainDocumentPart.GetStream())) 11 { 12 while ((line = sr.ReadLine()) != null) 13 { 14 WordFileLine.Add(cnt, line); 15 cnt++; 16 } 17 for (int i=0; i<WordFileLine.count; i++) 18 { 19      処理 20 } 21 } 22}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/10/31 13:32

一行ずつというのがわかりません。 XML を行単位で処理する意味が不明瞭なので詳細を追記しましょう。
Zuishin

2022/10/31 21:37

そう来たか。不明瞭なのは意味です。 あなたが何をしたいかがわからない。 一行ずつ読みたいのはわかったので、そこは二回書かなくて大丈夫です。
guest

回答1

0

docx を直接開くのではなく、WordのCOMオブジェクトを操作してはどうですか。
つまり VBA です。
VBAが使いにくければ、C#からも呼ぶことは可能です。

投稿2022/10/31 15:33

ruruucky

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekoyama771

2022/11/08 10:23

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問