So entfernen Sie leere Zeilen aus der DataTable
Arbeite ich auf importieren von Daten aus einer Excel-Tabelle zu Datenbank. Die Excel-Tabelle enthält einige leere Zeilen und ich möchten, entfernen Sie alle leeren Zeilen, dann legen Sie gelöscht, Daten in die Datenbank ein.
Ich habe geschrieben ein code-durch das verweisen auf andere code, dies ist der code für das einfügen von Werten:
OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + txtExcelFile.Text + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'");
//DataTable dt = new DataTable();
try
{
cnn.Open();
OleDbDataAdapter data = new OleDbDataAdapter("select * from [Customers$]", cnn);
data.Fill(dsExcel);
dgvCustomers.ColumnHeadersVisible = false;
SqlConnection connection = new SqlConnection("Data Source=COMPUTER-8EB749;Initial Catalog=KITS;Integrated Security=true");
connection.Open();
for (int i = 0; i < dsExcel.Tables[0].Rows.Count; i++)
{
string ID = ds.Tables[0].Rows[i][0].ToString();
Int16 CustID = Convert.ToInt16(ID);
string CustName = dsExcel.Tables[0].Rows[i][1].ToString();
string CardScheme = dsExcel.Tables[0].Rows[i][2].ToString();
string Outlet = dsExcel.Tables[0].Rows[i][3].ToString();
string TerminalNum = dsExcel.Tables[0].Rows[i][4].ToString();
Int32 Terminal = Convert.ToInt32(TerminalNum);
string Date1 = dsExcel.Tables[0].Rows[i][5].ToString();
DateTime Date = Convert.ToDateTime(Date1);
string Time = dsExcel.Tables[0].Rows[i][6].ToString();
DateTime DateTime = Convert.ToDateTime(Time);
string Amount1 = ds.Tables[0].Rows[i][7].ToString();
double Amount = Convert.ToDouble(Amount1);
SqlCommand com = new SqlCommand("insert into Customer(CustID,CustName,CardScheme,Outlet,TerminalNum,TranDate,TranDateTime,Amount) values ('" + CustID + "','" + CustName + "','" + CardScheme + "','" + Outlet + "','" + Terminal + "','" + Date + "','" + DateTime + "','" + Amount + "')", connection);
com.ExecuteNonQuery();
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
MessageBox.Show("Data Inserted Successfully.");
}
Kann jemand mir sagen, wie kann ich leere Zeilen entfernen, damit ich das einfügen kann nur Daten?!
- Als seitliche Anmerkung, die Sie wirklich besser entsorgen Sie ordnungsgemäß die Objekte über
using
block z.B.using (OleDbConnection cnn = new OleDbConnection(...))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen.
Bitte beachten Sie, dass ich nur überprüfen, ob die ID null ist und nicht das einfügen solcher Zeilen als ID wird der PK in der Tabelle.
Damit entfernen Sie alle Zeilen, die jeweils die Spalten enthalten entweder gar nichts oder ein Leerzeichen:
DataTable
. Excel-Blätter leere Zeilen am Ende von Arbeitsblättern, die alle die Zeit, und Sie haben Sie zu schreiben/ausführen eines Makros zum abschneiden der Arbeitsblatt - also ja, das ist nützlich!field as string
wird das Ergebnis alsnull
für einen Wert geben, so schlage ich vor, mitfield as string ?? field.ToString()
;).Hier ich m auch das überspringen der Zeilen, wenn Sie mit einer leeren Eintrag in einer der Zeile.
Ich habe eine private Methode, die funktioniert der trick.
Es dauert eine DataTable als argument und gibt die gleiche DataTable ohne leere Zeilen.
Warum nicht einfach ignorieren leere Zeilen, die direkt vor der Sie einfügen?
Wie diese:
SqlCommand com = new SqlCommand("insert ...
. Auf diese Weise werden Sie nicht legen Sie leere Daten.Überprüfen Leeren Zeilen
Ich geändert Cfrim Antwort. Sie müssen prüfen, beide leer und whitespace-Zeichenketten. Der weiße Raum kommt aus dem gelöschten Zellen und dem leeren Raum kommt von gelöschten Daten.
Ihre DB selbst hat leere Zeilen?? Das ist ziemlich merkwürdig. Möglicherweise filtern, während Sie mit einer select-Abfrage, indem Sie sagen: eine primary key-Spalte ist nicht NULL
funktioniert dies perfekt für mich: