vb.net アプリで差し込み印刷の代替手段を探しています。Word の差し込み印刷機能を使用したことがありますが、大量のドキュメントを処理する場合、非常にバグが多いことがわかりました。マージを生成する別の方法を検討していて、open xml に出会いました。これはおそらく私が探している答えになると思います。vb.net では、マージが完全にコード駆動になることがわかりました。次のコードをいじり始めました。
Dim wordprocessingDocument As WordprocessingDocument = wordprocessingDocument.Open("C:\Users\JasonB\Documents\test.docx", True)
'for each simplefield (mergefield)
For Each field In wordprocessingDocument.MainDocumentPart.Document.Body.Descendants(Of SimpleField)()
'get the document instruction values
Dim instruction As String() = field.Instruction.Value.Split(splitChar, StringSplitOptions.RemoveEmptyEntries)
'if mergefield
If instruction(0).ToLower.Equals("mergefield") Then
Dim fieldname As String = instruction(1)
For Each fieldtext In field.Descendants(Of Text)()
fieldtext.Text = "I AM TESTING"
Next
End If
wordprocessingDocument.MainDocumentPart.Document.Save()
wordprocessingDocument.Dispose()
これでうまくいきましたが、データ行と同じ数のドキュメントを作成する必要があることに気付きました (データテーブルを使用してデータを処理すると仮定します)。
私が見つけた 1 つの提案は、各データ行をループし、ドキュメント テンプレートを取得してフォルダーに保存し、データ行データを挿入することでした。ただし、これは、後で結合して pdf に変換する必要がある 12,000 のドキュメントが 1 つのフォルダーにあることを意味する可能性があります。
別のオプションはありますか?私にとって目立ったもう 1 つのことは、新しい Word ドキュメントを作成し、テンプレートから xml を複製してから、値を置き換えることです。ただし、これを行う「より簡単な」方法があるかどうかはわかりません。ありがとうございます。