@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

WORD文書の書き換えについて

投稿者投稿内容
Michio
会議室デビュー日: 2004/09/13
投稿数: 5
投稿日時: 2004-09-13 15:58
いつもこの掲示板にはお世話になっております。初めて投稿いたします。

VB.NETを使い始めてまだ2か月程度でして、現在下記環境にてシステム開発をしております。
【開発環境】
Windows2000 Server
SQL Server
VisualStudio .NET2003(VB.NET,ASP.NET)

システムの中で、WORD形式の文書をユーザがダウンロードする機能があるのですが、この方法がわからずに困っております。
DBから抽出した1件のデータから、WORD文書の「氏名」とか「住所」等の欄に文字を当てはめて出力する機能でして、様式が決まっていますので、既存のWORD文書のファイルの氏名欄や住所欄を書き換えてダウンロードする方法を考えておりました。
で、いろいろと調べてみましたが、WORD文書を操作するにはOfficeオートメーションを使用するしかないように感じたのですが、サーバサイドでのOfficeオートメーションは極力使わないように、とのマイクロソフトのページに記述がございましたもので、Officeオートメーションを使わない方法を模索しておりました。
http://support.microsoft.com/default.aspx?scid=kb;JA;257757

WORD形式にこだわらず、WORDで編集できる形式であればということでリッチテキスト文書でもいいと思い、方法をいろいろと調べてみましたが、さっぱりわからず・・・・。

Excelファイルを書き換えてダウンロードさせる機能は、こちらの掲示板とマイクロソフトのHPを参考に、なんとかそれらしく作成することはできました。WORDに関してはどうしてもわからず、ここ数日悩んでおりました。

どなたかうまい方法をご存知の方がおられましたら、ご教授いただければと思います。
よろしくお願いいたします。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-09-13 16:44
Excelのほうはどうやっているんでしょ?
Officeオートメーションを使わない方式でできているなら、Wordのほうも
同じような方法がとれるのではないかと思うのですが。。。

Wordのバージョンが2003だったらXML形式で保存して、そのXML文書の
中身を変換、という手がつかえそうですけどね。
Michio
会議室デビュー日: 2004/09/13
投稿数: 5
投稿日時: 2004-09-13 17:02
ご返答ありがとうございます。
Excelについてはマイクロソフトの下記ページにあった方法で出来ました。
http://support.microsoft.com/default.aspx?scid=kb;ja;306022#10

WORDも同様に操作できるかと思ったのですが、どうもうまく出来ず・・。
WORDの場合の書き方がよくわからなかったのと、WORDに関する同様な事例がどこにもなかったので、Excelと同様な方法では出来ないものと考えておりました。

あと書いておりませんでしたが、WORDのバージョンは2000です。
2000の場合はXMLで変換、という方法は無理なのでしょうか?
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2004-09-13 17:24
Word文書がRichTextで表現できる程度のものであれば、iTextSharpという
コンポーネントを利用してRichTextを生成する、という方法はいかがでしょうか?

http://itextsharp.sourceforge.net/
会議室デビュー日: 2004/04/26
投稿数: 9
投稿日時: 2004-09-13 17:32
Wordオブジェクトの操作で、何でもできると思います。
Word+帳票で検索すれば、いろいろ出てくるが、以前の経験では、レスポンスがかなり悪いようです。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-09-13 17:35
Word2000 なら拡張子DOC 中身HTML方式ができるはずです。
WordはHTMLを解釈できる、IEとは一致しませんが
どっとねっとふぁんの例
http://homepage3.nifty.com/dotnetfan/web/web12.html

Office の ユーティリティ HTML Filter などを研究して
コンパクトなHTMLのノウハウを習得すると簡単です。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-09-13 17:38 ]
Michio
会議室デビュー日: 2004/09/13
投稿数: 5
投稿日時: 2004-09-14 00:43
投稿いただいた皆様、ありがとうございます。

いろいろと考えた末、kanaiさんの方法でやろうと思い、試行錯誤しておりましたが、どうもわかりません。
iTextSharpをダウンロードし、参照設定に追加し、下記のページあたりを参考にしてやってみようと思いましたが、書き方がイマイチわかりません・・・。
http://itextsharp.sourceforge.net/tutorial/ch08.html
http://homepage3.nifty.com/dotnetfan/tool/tool03.html

kanaiさんの考えられた方法を、出来ればもう少し詳しくお教えいただけませんでしょうか?
お手数ですが、よろしくお願いいたします。
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2004-09-14 10:29
iTextSharpでRTFを作成する簡単なサンプル(VB)です。
より高度な文書を作成するにはChapterやSectionを使う必要があるかもしれません。

iText.NETというJ#で書かれたものもあって、こちらには日本語の解説もあります。
http://www.ujihara.jp/iTextdotNET/ja/

コード:

Imports iTextSharp.text
Imports iTextSharp.text.rtf
Imports iTextSharp.text.pdf

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim doc As Document
Dim pa As Paragraph
Dim writer As RtfWriter
Dim bfont As BaseFont
Dim font As Font
'Word文書としてダウンロードするための設定
Response.ContentType = "application/msword"
Response.AddHeader("content-disposition", "attachment; filename=sample.doc")
'Documentを作成
doc = New Document(PageSize.A4)
'RtfWriterを作成
writer = RtfWriter.getInstance(doc, Response.OutputStream)
'Fontを作成(C:\Windows\Fontは環境に応じて変更してください)
bfont = BaseFont.createFont("C:\Windows\Fonts\MSMINCHO.TTC,0", "Identity-H", True)
font = New Font(bfont, 12, Font.NORMAL)
'Documentを開いて編集
doc.Open()
pa = New Paragraph("適当な文章1", font)
doc.Add(pa)
pa = New Paragraph("適当な文章2", font)
doc.Add(pa)
pa = New Paragraph("適当な文章3", font)
doc.Add(pa)
doc.Close()
'ユーザーに送信
Response.Flush()
End Sub



[ メッセージ編集済み 編集者: kanai 編集日時 2004-09-14 10:34 ]

[ メッセージ編集済み 編集者: kanai 編集日時 2004-09-14 10:35 ]

スキルアップ/キャリアアップ(JOB@IT)