アプリケーションの作成
では、アプリケーションを作成していきます。
作成するアプリケーションは、新しいブックを作成してテキストファイルを読み込み、1行ずつ取り出してセルに代入するアプリケーションです。
GUIの作成
使用するアプリケーションはTextBox、ButtonコントロールとC1XLBookコンポーネントです。C1XLBookコンポーネントは機能のみの提供でGUIを持ちません。そのため、作成の中心はコードになります。
ファイルをテキストボックスで表示する処理
フォームのデザインができたら、2つのボタンの処理を作成します。
このアプリケーションでは、アプリケーションと同じフォルダにある「sample.txt」ファイルを読み込み、新しいブックを作成して1行ずつセルに転送します。直接ファイルを開いてストリームからデータを読み出しますから、そのままではユーザーにファイルの内容が分からない状態で処理が進んでしまいます。
そのため、開いたファイルの内容を確認してから変換できるように、まずはファイルの中身をTextBoxコントロールで表示するようにします。この処理は、「ファイルを開く」ボタンのClickイベントハンドラで行います。
ファイルをStreamReaderクラスを使用してストリームに開き、ReadToEndメソッドでファイルの中身をすべて取出し、TextBoxコントロールのTextプロパティに設定します。
Imports System.IO Imports C1.C1Excel Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim sr As StreamReader = New StreamReader("sample.txt", System.Text.Encoding.Default) TextBox1.Text = sr.ReadToEnd() sr.Close() End Sub
using System.IO; using C1.C1Excel; namespace doc2xls_Winform_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { StreamReader sr = new StreamReader("sample.txt", System.Text.Encoding.Default); textBox1.Text = sr.ReadToEnd(); sr.Close(); }
ファイルの変換処理
アプリケーション本来の処理は、「変換」ボタンのClickイベントハンドラで行います。
(1)最初に新しいブックを作成します。XLSheet型の変数を用意し、ここにC1XLBookコンポーネントのSheetオブジェクトを代入します。
Dim sheet As XLSheet = C1XLBook1.Sheets(0)
XLSheet sheet = c1XLBook1.Sheets[0];
たったこの1行でワークシートが用意され、データをセルに転送できるようになります。
(2)Doループを使用して、ストリームから1行ずつテキストを取り出します。これはStreamReaderクラスのReadLineメソッドを使用します。DoループはStreamReaderクラスのPeekメソッドの戻り値が0になるまで繰り返すことで、ファイルの末尾まで順番に1行ずつ取り出していきます。
Dim sr As StreamReader = New StreamReader("sample.txt", System.Text.Encoding.Default) Do While sr.Peek() >= 0 data = sr.ReadLine()
StreamReader sr = new StreamReader("sample.txt", System.Text.Encoding.Default); do { data = sr.ReadLine();
(3)1行取り出したら、ワークシートのセルに代入します。セルへのアクセスは作成したSheetオブジェクトの名前のあとに()でセルの行列番号を指定するだけです。例えば、先頭のセル(ExcelでいうセルA1)は、行列番号は0,0になります。ここでは1行ずつセルに代入していきますので、列番号は0のまま行番号だけ変えながら代入していきます。そして、すべての代入が終了したらストリームを閉じます。
sheet(i, 0).Value = data i += 1 Loop sr.Close()
sheet[i, 0].Value = data; i += 1; }while( sr.Peek() >= 0); sr.Close();
(4)データの入力が終わったら、いくつかのセルのスタイルを変更します。
セルのスタイルを操作する場合は、XLStyleクラスのインスタンスを作成し、変更したいメンバプロパティを設定します。そして、そのXLStyleオブジェクトを、スタイルを設定したいセルや列のStyleプロパティに設定します。
ここでは列0(ExcelではA列)全体のセルスタイルのフォントサイズ、文字色、文字列の折り返しを変更するため、「cellstyle」という名前のXLStyleオブジェクトを作成しています。列のスタイルにアクセスするには、Columnsプロパティの引数に列番号を指定し、Styleプロパティに作成したXLStyleオブジェクトを代入します。
Dim cellstyle As New XLStyle(C1XLBook1) cellstyle.Font = New Font(Font.Name, 12) cellstyle.ForeColor = Color.Blue cellstyle.WordWrap = True sheet.Columns(0).Style = cellstyle
XLStyle cellstyle = new XLStyle(c1XLBook1); cellstyle.Font = new Font(Font.Name, 12); cellstyle.ForeColor = Color.Blue; cellstyle.WordWrap = true; sheet.Columns[0].Style = cellstyle;
(5)列幅を変更する場合は、Columnsプロパティの引数に列番号を指定し、Widthプロパティの値を変更します。単位はtwipsです。
sheet.Columns(0).Width = 6000
sheet.Columns[0].Width = 6000;
(6)最後に作成したブックを保存します。これは、C1XLBookクラスのSaveメソッドを使用します。引数に保存するブック名を拡張子付きで指定します。パス名を付けることもできます。パス名を省略するとアプリケーションと同じフォルダに保存されます。
C1XLBook1.Save("sample_book.xls") MessageBox.Show("データをワークシートに保存しました")
c1XLBook1.Save("sample_book.xls"); MessageBox.Show("データをワークシートに保存しました");
(7)以上で出来上がりです。アプリケーションを実行して動作を確認します。なお、アプリケーションの動作テストの際は、記事添付のサンプルコード(3種類のいずれか)に含まれているテキストファイル「sample.txt」をアプリケーションと同じフォルダに置いてください。
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim data As String = "" Dim i As Integer = 0 Dim sr As StreamReader = New StreamReader("sample.txt", System.Text.Encoding.Default) Do While sr.Peek() >= 0 data = sr.ReadLine() sheet(i, 0).Value = data i += 1 Loop sr.Close() Dim cellstyle As New XLStyle(C1XLBook1) cellstyle.Font = New Font(Font.Name, 12) cellstyle.ForeColor = Color.Blue cellstyle.WordWrap = True sheet.Columns(0).Style = cellstyle sheet.Columns(0).Width = 6000 C1XLBook1.Save("sample_book.xls") MessageBox.Show("データをワークシートに保存しました") End Sub
private void button2_Click(object sender, EventArgs e) { String data = ""; int i = 0 ; StreamReader sr = new StreamReader("sample.txt", System.Text.Encoding.Default); do { data = sr.ReadLine(); sheet[i, 0].Value = data; i += 1; }while( sr.Peek() >= 0); sr.Close(); XLStyle cellstyle = new XLStyle(c1XLBook1); cellstyle.Font = new Font(Font.Name, 12); cellstyle.ForeColor = Color.Blue; cellstyle.WordWrap = true; sheet.Columns[0].Style = cellstyle; sheet.Columns[0].Width = 6000; c1XLBook1.Save("sample_book.xls"); MessageBox.Show("データをワークシートに保存しました"); }
まとめ
今回は、C1XLBookコンポーネントの使い方の一つとして、テキストファイルをワークシートに変換する機能を持ったアプリケーションを作成してみました。アプリケーションデータをワークシートに保存する機能も同様のやり方で作成できますから、ファイル保存処理でお悩みの方は、このコンポーネントの導入を検討してみてはいかがでしょうか。