0
Excelファイルの6番目の行からデータをインポートします。 Excelの1行目から5行目の見出しがあります。データをインポートすると、Excelの2行目にデータがないため、値はnullです。代わりに一括コピーのExcelファイルの6行目のデータをSQL Serverに読み込む方法は?
conString = string.Format(conString, excelPath);
using (OleDbConnection excel_con = new OleDbConnection(conString))
{
excel_con.Open();
string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
DataTable dtExcelData = new DataTable();
//[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.
dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
new DataColumn("Name", typeof(int)),
new DataColumn("Salary",typeof(decimal)) });
using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
{
oda.Fill(dtExcelData);
}
excel_con.Close();
string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.tblPerson";
//[OPTIONAL]: Map the Excel columns with that of the database table
sqlBulkCopy.ColumnMappings.Add("Id", "PersonId");
sqlBulkCopy.ColumnMappings.Add("Name", "Name");
sqlBulkCopy.ColumnMappings.Add("Salary", "Salary");
con.Open();
sqlBulkCopy.WriteToServer(dtExcelData);
con.Close();
}
}
}
によってdtExcelData行のデータを挿入することができます。 (OleDbDataAdapter oda =新しいOleDbDataAdapter( "SELECT * FROM [" + sheet1 + "$" + "A7:ZZ]"、excel_con)) { oda.Fill(dtExcelData); } excel_con.Close();しかし、Microsoft Office Accessデータベースエンジンが 'Sheet1 $$ A7:ZZ'というオブジェクトを見つけられなかったため、エラーが発生しました。オブジェクトが存在し、その名前とパス名のスペルが正しいことを確認してください。 – HAPPYsukh
私は解決策を得ました。私は(OleDbDataAdapter oda = new OleDbDataAdapter( "SELECT * FROM [" + sheet1 + "A6:F]"、excel_con)を使ってコードを変更しました。 – HAPPYsukh