アプリケーションの作成
では、アプリケーションを作成していきます。
作成するアプリケーションは、新しいブックを作成してテキストファイルを読み込み、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コンポーネントの使い方の一つとして、テキストファイルをワークシートに変換する機能を持ったアプリケーションを作成してみました。アプリケーションデータをワークシートに保存する機能も同様のやり方で作成できますから、ファイル保存処理でお悩みの方は、このコンポーネントの導入を検討してみてはいかがでしょうか。



