SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

テキストデータから印刷ドキュメントを作成する.NETアプリケーションの作成

ComponentOne StudioのReports for Windows Formsを使ったWindowsアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

段落の作成とファイルの読み出し処理

 今度は段落を設定し、そこにファイルから読み込んだ文字列を流し込むようにします。

段落を設定する

 段落の作成は、RenderParagraphクラスを使用して作成します。段落の中には複数のスタイル、インライン画像、およびハイパーリンクを使って描画される複数のテキストフラグメントを組み込むことができます。

 まず、RenderParagraphクラスのコンストラクタでオブジェクトを作成し、StreamReaderクラスを使ってテキストファイルから文字列を読み込み、変数に格納します。

 次に、その文字列をAddTextメソッドで記述していきます。これは、RenderParagraphオブジェクト内のコンテンツを表すParagraphObjectCollectionオブジェクトを取得し、そこにテキストを追加するという形をとります。そして、最後に作成した段落をドキュメントに追加します。

Visual Basic
' ----- 段落 para を作成 -----------------------------------
Dim para As New RenderParagraph()

'ファイルから文字列を読み込む
Dim fname As String = Application.StartupPath & "\sample.txt"
Dim data As String

Try
    Dim sr As StreamReader = New StreamReader(fname, System.Text.Encoding.Default)
    Do
        data = sr.ReadLine()   
        para.Content.AddText(data)
    Loop Until data Is Nothing
    sr.Close()

Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

' 段落をドキュメントに追加
C1PrintDocument1.Body.Children.Add(para)
C#
// ----- 段落 para を作成 -----------------------------------
RenderParagraph para = new RenderParagraph();

//ファイルから文字列を読み込む
String fname = Application.StartupPath + "/sample.txt";
String data="";

try
{
    StreamReader sr = new StreamReader(fname, System.Text.Encoding.Default);
    while(data != null)
    {
        data = sr.ReadLine();
        para.Content.AddText(data);
    } 
    sr.Close();

}catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

// 段落をドキュメントに追加
c1PrintDocument1.Body.Children.Add(para);
段落が追加され文字列が流し込まれている
段落が追加され文字列が流し込まれている

もう1つブロックと段落を追加する

 もう1つブロックと段落を追加します。今度は、「sample2.txt」の中身を取り出して整形文書にします。作成方法は今までのものとまったく同じで、一部ファイル名と変数名が違うだけです。

Visual Basic
'---- 3番目の段落ブロック ------------------------------------

'見出しの設定
C1PrintDocument1.StartDoc()
C1PrintDocument1.RenderInlineText(" ")
C1PrintDocument1.RenderInlineText(" ")
C1PrintDocument1.RenderInlineText("■コンポーネントのインストール", _
      New Font("MSゴシック", 14, FontStyle.Bold), Color.DarkCyan)
C1PrintDocument1.EndDoc()

' 段落 para2を作成
Dim para2 As New RenderParagraph()
fname = Application.StartupPath & "\sample2.txt"
data = ""

'ファイルから文字列を読み込む
Try
    Dim sr As StreamReader = New StreamReader(fname, System.Text.Encoding.Default)
    Do
        data = sr.ReadLine()
        para2.Content.AddText(data)
    Loop Until data Is Nothing
    sr.Close()

Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

' 段落をドキュメントに追加
C1PrintDocument1.Body.Children.Add(para2)

'ドキュメントを作成
C1PrintDocument1.Generate()
C#
//--- 3番目の段落ブロック ------------------------------------
// 見出しの設定
c1PrintDocument1.StartDoc();
c1PrintDocument1.RenderInlineText(" ");
c1PrintDocument1.RenderInlineText(" ");
c1PrintDocument1.RenderInlineText("■コンポーネントのインストール", 
                       new Font("MSゴシック", 14,
                      FontStyle.Bold), Color.DarkCyan);
c1PrintDocument1.EndDoc();


// ----- 段落 para2 を作成 -----------------------------------
RenderParagraph para2 = new RenderParagraph();

//ファイルから文字列を読み込む
fname = Application.StartupPath + "/sample2.txt";
data = "";

try
{
    StreamReader sr = new StreamReader(fname, System.Text.Encoding.Default);
    while (data != null)
    {
        data = sr.ReadLine();
        para2.Content.AddText(data);
    }
    sr.Close();

}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

// 段落をドキュメントに追加
c1PrintDocument1.Body.Children.Add(para2);

// ドキュメントを作成
this.c1PrintDocument1.Generate();
2つ目の段落が挿入される
2つ目の段落が挿入される

まとめ

 今回は、ファイルからテキストデータを読み込んで整形したドキュメントを作成する方法を紹介しましたが、C1PrintDocumentコントロールはとても多機能で、少ないページ数ではすべてを紹介しきれないほど、ドキュメント作成にあらゆる加工が施せるコンポーネントです。

 また、C1PrintPreviewControlはほとんど設定をする必要がなく、作成したドキュメントをそのままプレビューし印刷できるという機能を持った使いやすいコンポーネントであるため、この2つだけでもさまざまなニーズに対応できると思います。

製品情報

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5515 2010/10/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング