[ad_1]
を使用してExcelファイルからデータを取得することにより、SQLiteデータベースのテーブルにデータを追加しようとしています fastexcel ライブラリ.
しかし、ワークシートの行の特定のセル/列から値を取得する方法がわかりません。
誰でもこれで私を助けてくれますか…
私が試したこと:
C#
public void UpdateDBtable() { DataTable dt = new DataTable(); dt.Columns.Add("Party"); dt.Columns.Add("Bill No"); ... dt.Columns.Add("Head"); string file_Bills = @"D:\Test\Test.xlsx"; using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(file_Bills, true)) { Worksheet worksheet = fastExcel.Read(1); var rows = worksheet.Rows.ToArray(); //ideally the below rows.Count() should be the count of number of rows whose column A value exists but don't know how to do that either for (int _row = 2; _row <= rows.Count(); _row++) { DataRow dr = dt.NewRow(); //below line is intended to get specific cells text but doesn't work dt.Rows.Add(worksheet.Cells[_row, 1].Text, worksheet.Cells[_row, 2].Text, ..., worksheet.Cells[_row, 7].Text); dt.AcceptChanges(); } using(SQLiteConnection conn= new SQLiteConnection(@"Data Source="+Path.GetFullPath("./test.db"))) { conn.Open(); using (var cmd = new SQLiteCommand(conn)) { string str; SQLiteCommand com; foreach (DataRow row in dt.Rows) { str = "INSERT OR IGNORE INTO billdata(Party,BillNo,...,Head)values(@Party,@BillNo,...,@Head)"; com = new SQLiteCommand(str, conn); com.Parameters.AddWithValue("@Party", row.Field<string>(0)); com.Parameters.AddWithValue("@BillNo", row.Field<string>(1)); ... com.Parameters.AddWithValue("@Head", row.Field<string>(8)); com.ExecuteNonQuery(); } } conn.Close(); } } }
解決策 1
そのプロジェクトで彼らが提供した例から、例2を読むにはこのスニペットがあります
C#
var rows = worksheet.Rows.ToArray(); //Do something with rows Console.WriteLine(string.Format("Worksheet Rows:{0}", rows.Count()));
その場合、配列は rows
は 2 次元配列です。これは、例を実行して調べることで確認できます。 rows
ウォッチ ウィンドウで。 何かのようなもの rows[0,1]
おそらくセルA2の値を返します。
ただし、これはそのプロジェクトの作成者に最もよく尋ねられる質問です。
[ad_2]
コメント