作成日: 2022/08/01 最終更新日: 2022/08/01
文書種別
使用方法
詳細
CSVファイルを直接FlexReportにバインドしてレポートを作成することはできませんが、Excel for .NETのLoadメソッドを用いてCSVファイルをc1XLBookコントロールに読み込み、そのデータをDataTableに設定し、これをDataSourceとして指定することで、CSVファイルをデータソースとして利用することができます。
以下に、レポートの3つのフィールドにCSVファイルのデータを読み込むサンプルコードを記載します。
(事前準備)
・3つの文字列をコンマで区切った行を複数設定したCSVファイル(TestData.csv)を作成します。
・レポートデザイナで、詳細セクションに3つのテキストフィールド("CategoryID"、"CategoryName"、"Description")を追加したレポートファイル(Test01.flxr)を作成します。
・フォームにC1FlexViewerコントロールとC1FlexReportコントロールを追加します。
・さらにフォームに、Excel for .NETのC1XLBookコントロールを追加します。
※レポートのテキストフィールド名とDataTableの列名を同じにする必要があります。
※これらの名前を別々に設定したい場合は、レポートのフィールドのTextプロパティに、「=列名」の形でDataTableの列名を設定します。詳細な設定方法は、レポートのデータソースとしてDataTableを設定する方法(サンプルコード)を参照してください。
◎サンプルコード(VB)
以下に、レポートの3つのフィールドにCSVファイルのデータを読み込むサンプルコードを記載します。
(事前準備)
・3つの文字列をコンマで区切った行を複数設定したCSVファイル(TestData.csv)を作成します。
・レポートデザイナで、詳細セクションに3つのテキストフィールド("CategoryID"、"CategoryName"、"Description")を追加したレポートファイル(Test01.flxr)を作成します。
・フォームにC1FlexViewerコントロールとC1FlexReportコントロールを追加します。
・さらにフォームに、Excel for .NETのC1XLBookコントロールを追加します。
※レポートのテキストフィールド名とDataTableの列名を同じにする必要があります。
※これらの名前を別々に設定したい場合は、レポートのフィールドのTextプロパティに、「=列名」の形でDataTableの列名を設定します。詳細な設定方法は、レポートのデータソースとしてDataTableを設定する方法(サンプルコード)を参照してください。
◎サンプルコード(VB)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' csvファイルのデータをc1XLBookに読み込み
C1XLBook1.Load("..\..\TestData.csv", C1.C1Excel.FileFormat.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"))
' c1XLBookの各行の値をデータテーブルの行に割り当て
For i As Integer = 0 To c1XLBook1.Sheets(0).Rows.Count - 1
Dim dr As DataRow = dt.NewRow()
dr("CategoryID") = c1XLBook1.Sheets(0)(i, 0).Value
dr("CategoryName") = c1XLBook1.Sheets(0)(i, 1).Value
dr("Description") = c1XLBook1.Sheets(0)(i, 2).Value
dt.Rows.Add(dr)
Next
' C1FlexReportにレポート定義ファイルを読み込み
C1FlexReport1.Load("..\..\Test01.flxr", "レポート 1")
' C1FlexReportのRecordsetにデータテーブルを設定
C1FlexReport1.DataSource.Recordset = dt
' c1FlexViewerを用いてプレビュー表示
C1FlexReport1.Render()
C1FlexViewer1.DocumentSource = C1FlexReport1
End Sub
End Class
◎サンプルコード(C#)
namespace prj_FlexReport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// csvファイルのデータをc1XLBookに読み込み
c1XLBook1.Load("..\\..\\TestData.csv", C1.C1Excel.FileFormat.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"));
// c1XLBookの各行の値をデータテーブルの行に割り当て
for (int i = 0; i < c1XLBook1.Sheets[0].Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["CategoryID"] = c1XLBook1.Sheets[0][i, 0].Value;
dr["CategoryName"] = c1XLBook1.Sheets[0][i, 1].Value;
dr["Description"] = c1XLBook1.Sheets[0][i, 2].Value;
dt.Rows.Add(dr);
}
// C1FlexReportにレポート定義ファイルを読み込み
c1FlexReport1.Load("..\\..\\Test01.flxr", "レポート 1");
// C1FlexReportのRecordsetにデータテーブルを設定
c1FlexReport1.DataSource.Recordset = dt;
// c1FlexViewerを用いてプレビュー表示
c1FlexReport1.Render();
c1FlexViewer1.DocumentSource = c1FlexReport1;
}
}
}