C#中,EXCEL與表列順序完全一致情況的導(dǎo)入處理(BeginBinaryImport)
使用:BeginBinaryImport能快速的導(dǎo)入臨時(shí)表
//讀取datagridview的值 private string GetCellValue(DataGridViewRow row, string columnName, string defaultValue = "0") { var value = row.Cells[columnName].Value; return (value == null || string.IsNullOrEmpty(value.ToString().Trim())) ? defaultValue : value.ToString().Trim(); }
string sql, clientName, goodsId, departmentid, departmentName, account_id, account_name, xynr, qty, amount, sfzx, year; string type = ""; string m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12; string tmpTabelName = "xls" + DateTime.Now.ToFileTimeUtc().ToString(); lbRate.Text = "正在導(dǎo)入,請(qǐng)稍等"; try { sql = "create unlogged table " + tmpTabelName + "("; sql += @" clientname varchar(120) not null , departmentname varchar(50) not null default '' )"; DBHelperPg.ExecuteNonQuery(sql); DataGridViewRow drvRow; // 使用COPY命令(PostgreSQL高效批量插入) NpgsqlConnection conn = new NpgsqlConnection(DB.DBHelperPg.ConnectionString); conn.Open(); using (var writer = conn.BeginBinaryImport($"COPY {tmpTabelName} FROM STDIN (FORMAT BINARY)")) { for (int i = 0; i < dataGridView1.RowCount; i++) { drvRow = dataGridView1.Rows[i]; clientName = GetCellValue(drvRow, "客戶名稱"); departmentName = GetCellValue(drvRow, "部門名稱"); writer.StartRow(); writer.Write(clientName); writer.Write(departmentName); // ... 其他字段 } writer.Complete(); } conn.Close();
活到老,學(xué)到老。

浙公網(wǎng)安備 33010602011771號(hào)