2

C#でWindows フォーム アプリケーションを開発しています。私のプログラムはExcelセルから値を読み取り、データをDataGridViewに挿入してユーザーを表示します。

Excel ファイルを読み取った後、結果を文字列配列で取得します。DataGridView に挿入するにはどうすればよいですか?

private void btnImport_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application ExcelObj = null;
        ExcelObj = new Microsoft.Office.Interop.Excel.Application();

        if (ExcelObj != null)
        {
            if (tbxFileDirectory.Text != "")
            {
                Workbook workbook = ExcelObj.Workbooks.Open(
                openFD.FileName, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true);

                Sheets sheets = workbook.Worksheets;

                //Get excel sheet number
                Worksheet worksheet = (Worksheet)sheets.get_Item(1);

                for (int i = 6; i <= worksheet.UsedRange.Rows.Count; i++)
                {
                    Range range = worksheet.get_Range("A" + i.ToString(), "K" + i.ToString());

                    Array myvalues = (Array)range.Cells.Value;

                    string[] strArray = ConvertToStringArray(myvalues);

                    //INSERT INTO DATAGRIDVIEW
                }
                MessageBox.Show("File was imported successfully");
            }
            else
            {
                MessageBox.Show("Please select the file to import.");
            }
        }
        else 
        {
            MessageBox.Show("ERROR: EXCEL couldn't be started!");
        }
    }

私の DataGrid には、ProductID、ProductName、Price、および Qty の 4 つの列があります。これらの値、strArray[0]、strArray[1]、strArray[9]、strArray[10] を各列に挿入したいと考えています。これどうやってするの?どんな助けでも大歓迎です!

4

2 に答える 2

2

DataGridView には、文字列を直接挿入するときにパフォーマンスの問題があり、グリッド自体のデータしかない場合、データを操作するのは面倒です (ただし、Excel から解析したデータが必要なのは明らかです)。通常は、データを DataTable に入れ、それをグリッドにバインドすることをお勧めします。

コードを介して DataTable にデータを詰め込む例が必要な場合は、「既にデータが含まれているデータ テーブルに新しい列とデータを追加する - c# 」を参照してください。

バインドは簡単です。DataTable をグリッドの DataSource プロパティに割り当てます。

数百行を超える場合でも、パフォーマンスの問題が発生する可能性がありますが、ロジックを変更してデータを仮想化することで、仮想モードを使用したデータテーブルの DataGridView ライブ表示を参照してください。

于 2013-08-22T13:36:36.200 に答える