FlexGrid for WinForms
ロード
保存、ロード、印刷 > ロード

FlexGrid では、グリッドをさまざまな形式に保存できるだけでなく、テキスト、Excel、XML、データベースなどのさまざまな形式からデータをロードできます。この機能は、C1.Win.C1FlexGrid.ImportExport.dll という名前のアセンブリを通じて有効になります。したがって、これらのソースからグリッドにデータをロードするには、このアセンブリへの参照を追加する必要があります。

テキストファイルからのロード

テキストファイルからデータをロードするために、FlexGrid には Extensions クラスの LoadGrid メソッドが用意されています。このメソッドには、区切り文字やエンコードなどを選択するためのパラメータがあります。SaveGrid メソッドを使用して保存されたテキストファイルをロードすることもできます。 テキストファイルをロードすると、ファイルの内容に合わせて、必要に応じて行と列がグリッドに追加されます。 このメソッドは、カンマ区切りテキストファイル (CSV 形式)、タブ区切りテキストファイルなどの形式のほか、MS Excel ファイル(.xls)もサポートしています。

次のコードは、テキストファイルからデータをロードして WinForms FlexGrid に挿入する方法を示します。

private void btnLoadTxt_Click(object sender, EventArgs e)
{
    c1FlexGrid1.LoadGrid("../.../ExportedGrid.txt", FileFormatEnum.TextComma );
}
Private Sub btnLoadTxt_Click(ByVal sender As Object, ByVal e As EventArgs)
    c1FlexGrid1.LoadGrid("../.../ExportedGrid.txt", FileFormatEnum.TextComma)
End Sub

Excel ファイルからのロード

Excel ファイルからグリッドをロードするには、前述の LoadGrid メソッドを使用し、FileFormatEnum.Excel に書式パラメータを設定します。コンピュータに Microsoft Excel をインストールしておく必要はありません。ただし、LoadGrid メソッドは、ワークブックの最初のワークシートからしかデータをロードできません。

Excel ファイルからデータをロードする際に、さらに詳細な制御を行うには、代わりに LoadExcel メソッドを使用します。このメソッドで Excel ファイルをロードすると、行や列のサイズ、フォント、色、書式、セルの配置など、ほとんどのデータ型と書式設定情報が変換されます。ただし、いくつかの例外はあります。たとえば、グリッドは Excel のセル内の値をロードしますが、その基になる式をロードすることはできません。ほかにも、固定セル、結合セル、画像、データマップ、セル境界線などの機能も変換されません。

Excel ファイルから WinForms FlexGrid にコンテンツをロードするには、次のコードを使用します。

private void btnLoadExcl_Click(object sender, EventArgs e)
{
    c1FlexGrid1.LoadExcel("../.../ExportedGrid.xlsx");
}
Private Sub btnLoadExcl_Click(ByVal sender As Object, ByVal e As EventArgs)
    c1FlexGrid1.LoadExcel("../.../ExportedGrid.xlsx")
End Sub

データベースからのロード

データベースからグリッドデータをロードするには、DataReader オブジェクトを使用します。このプロセスはデータ連結とは異なります。つまり、1 つ以上のコントロールと基底のデータソースの間に有効な接続は維持されません。

次のコードは、データベースから WinForms FlexGrid にコンテンツをロードする方法を示しています。

private void btnLoadDB_Click(object sender, EventArgs e)
{
       
    {
        // DataReaderを準備します。
        string strConn = "data source=MYMACHINE;initial catalog=Northwind;";
        System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection(strConn);
        System.Data.SqlClient.SqlCommand myCMD = new System.Data.SqlClient.SqlCommand("SELECT * FROM Employees", myConn);
        myConn.Open();
        System.Data.SqlClient.SqlDataReader myReader = myCMD.ExecuteReader();

        // DBスキーマからグリッド構造を構築します。
        DataTable dt = myReader.GetSchemaTable();
       c1FlexGrid1.Cols.Count = 1;
        foreach (DataRow dr in dt.Rows)
        {
            Column c =c1FlexGrid1.Cols.Add();
            c.Caption = c.Name = (string)dr["ColumnName"];
            c.DataType = (Type)dr["DataType"];
        }

        // グリッドにデータを入力します。
       c1FlexGrid1.Rows.Count = 1;
        int row = 1;
        int cols = dt.Columns.Count;
        object[] v = (object[])Array.CreateInstance(typeof(object), cols);
        while (myReader.Read())
        {
            myReader.GetValues(v);
           c1FlexGrid1.AddItem(v, row++, 1);
        }

        // クリーンアップします。
       c1FlexGrid1.AutoSizeCols();
        myReader.Close();
        myConn.Close();
    }
}
Private Sub btnLoadDB_Click(sender As Object, e As EventArgs) Handles btnLoadDB.Click
    ' DataReaderを作成します

    Dim strConn As String = "Data Source=(localdb)\MSSQLLocalDB; Initial Catalog = Inventory"
    Dim myConn As New System.Data.SqlClient.SqlConnection(strConn)
    Dim myCMD As New SqlCommand("SELECT * FROM Users", myConn)

    myConn.Open()
    Dim myReader As SqlClient.SqlDataReader = myCMD.ExecuteReader()

    '  DBスキーマからグリッド構造を作成します
    Dim dt As System.Data.DataTable = myReader.GetSchemaTable()
    C1FlexGrid1.Cols.Count = 1
    Dim dr As System.Data.DataRow
    For Each dr In dt.Rows
        Dim c As C1.Win.C1FlexGrid.Column = C1FlexGrid1.Cols.Add()
        c.Caption = CStr(dr("ColumnName"))
        c.Name = CStr(dr("ColumnName"))
        c.DataType = CType(dr("DataType"), Type)
    Next dr

    '  グリッドにデータを入力します
    C1FlexGrid1.Rows.Count = 1
    Dim row As Integer = 1
    Dim cols As Integer = dt.Columns.Count
    Dim v As Object() = CType(Array.CreateInstance(GetType(Object), cols), Object())
    While myReader.Read()
        myReader.GetValues(v)
        C1FlexGrid1.AddItem(v, row, 1)
        row += 1
    End While

    '  クリーンアップします
    C1FlexGrid1.AutoSizeCols()
    myReader.Close()
    myConn.Close()
End Sub

XML からロード

To deserialize grid contents from an XML document, you can simply call ReadXml method of the C1FlexGrid class. The ReadXml method allows you to parse path of the XML document as its parameters along with the choice of the FlexGrid element to be loaded using XmlOptions enumeration. Using XmlOptions parameter, you can load ColumnInfo, RowInfo, Ranges, Control, Styles, Maps, Tree, Glyphs, and Images from XML.

XML ドキュメントから WinForms FlexGrid にコンテンツをロードするには、次のコードを使用します。

private void btnReadXML_Click(object sender, EventArgs e)
{
    if (File.Exists("ExportedGrid.xml"))
        c1FlexGrid1.ReadXml("ExportedGrid.xml", XmlOptions.All);
    else
        MessageBox.Show("No Layout File Found");
}
Private Sub btnLoadXML_Click(ByVal sender As Object, ByVal e As EventArgs)
    c1FlexGrid1.ReadXml("../.../ExportedGrid.xml")
End Sub

Further, sorted, filtered, or grouped elements of FlexGrid that are saved to an XML file can be retrieved using the ReadXml method. The XML file loads the elements in the same order as they were stored.

関連トピック