作成日: 2022/08/01 最終更新日: 2022/08/01
文書種別
使用方法
詳細
CSVファイルを直接FlexReportにバインドしてレポートを作成することはできませんが、StreamReaderに読み込んだCSVファイルのデータをDataTableに設定し、これをDataSourceとして指定することで、CSVファイルをデータソースとして利用することができます。
以下に、レポートの3つのフィールドにCSVファイルのデータを読み込むサンプルコードを記載します。
(事前準備)
・3つの文字列をコンマで区切った行(例:"1,a1,a2")を複数設定したCSVファイル(TestData.csv)を作成します。
・レポートデザイナで、詳細セクションに3つのテキストフィールド ("CategoryID"、"CategoryName"、"Description") を追加したレポートファイル(Test01.flxr)を作成します。
・フォームにC1FlexViewerコントロールとC1FlexReportコントロールを追加します。
※レポートのテキストフィールド名とDataTableの列名を同じにする必要があります。
※これらの名前を別々に設定したい場合は、レポートのフィールドのTextプロパティに、「=列名」の形でDataTableの列名を設定します。詳細な設定方法は、レポートのデータソースとしてDataTableを設定する方法(サンプルコード)を参照してください。
◎サンプルコード(VB)
以下に、レポートの3つのフィールドにCSVファイルのデータを読み込むサンプルコードを記載します。
(事前準備)
・3つの文字列をコンマで区切った行(例:"1,a1,a2")を複数設定したCSVファイル(TestData.csv)を作成します。
・レポートデザイナで、詳細セクションに3つのテキストフィールド ("CategoryID"、"CategoryName"、"Description") を追加したレポートファイル(Test01.flxr)を作成します。
・フォームにC1FlexViewerコントロールとC1FlexReportコントロールを追加します。
※レポートのテキストフィールド名とDataTableの列名を同じにする必要があります。
※これらの名前を別々に設定したい場合は、レポートのフィールドのTextプロパティに、「=列名」の形でDataTableの列名を設定します。詳細な設定方法は、レポートのデータソースとしてDataTableを設定する方法(サンプルコード)を参照してください。
◎サンプルコード(VB)
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' csvファイルのデータをStreamReaderに読み込み
Dim csv_file As System.IO.StreamReader = File.OpenText("..\..\TestData.csv")
' データテーブルを設定
Dim dt As DataTable = New DataTable()
dt.Columns.Add("CategoryID", System.Type.[GetType]("System.String"))
dt.Columns.Add("CategoryName", System.Type.[GetType]("System.String"))
dt.Columns.Add("Description", System.Type.[GetType]("System.String"))
' 値をデータテーブルの行に割り当て
While csv_file.Peek() >= 0
' StreamReaderから1行読み込み
Dim line As String = csv_file.ReadLine()
' コンマでデータを分割
Dim vals As String() = line.Split(","c)
' 各データをデータテーブルの各列に割り当て
Dim dr As DataRow = dt.NewRow()
dr("CategoryID") = vals(0)
dr("CategoryName") = vals(1)
dr("Description") = vals(2)
dt.Rows.Add(dr)
End While
csv_file.Close()
' C1FlexReportにレポート定義ファイルを読み込み
C1FlexReport1.Load("..\..\Test01.flxr", "レポート 1")
' C1FlexReportのRecordsetにデータテーブルを設定
C1FlexReport1.DataSource.Recordset = dt
' c1FlexViewerを用いてプレビュー表示
C1FlexReport1.Render()
C1FlexViewer1.DocumentSource = C1FlexReport1
End Sub
End Class
◎サンプルコード(C#)
using System.IO;
namespace prj_FlexReport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// csvファイルのデータをStreamReaderに読み込み
System.IO.StreamReader csv_file = File.OpenText("..\\..\\TestData.csv");
// データテーブルを設定
DataTable dt = new DataTable();
dt.Columns.Add("CategoryID", System.Type.GetType("System.String"));
dt.Columns.Add("CategoryName", System.Type.GetType("System.String"));
dt.Columns.Add("Description", System.Type.GetType("System.String"));
// 値をデータテーブルの行に割り当て
while (csv_file.Peek() >= 0)
{
// StreamReaderから1行読み込み
string line = csv_file.ReadLine();
// コンマでデータを分割
string[] vals = line.Split(',');
// 各データをデータテーブルの各列に割り当て
DataRow dr = dt.NewRow();
dr["CategoryID"] = vals[0];
dr["CategoryName"] = vals[1];
dr["Description"] = vals[2];
dt.Rows.Add(dr);
}
csv_file.Close();
// C1FlexReportにレポート定義ファイルを読み込み
c1FlexReport1.Load("..\\..\\Test01.flxr", "レポート 1");
// C1FlexReportのRecordsetにデータテーブルを設定
c1FlexReport1.DataSource.Recordset = dt;
// c1FlexViewerを用いてプレビュー表示
c1FlexReport1.Render();
c1FlexViewer1.DocumentSource = c1FlexReport1;
}
}
}