Pen*_*uen 1 .net c# visual-studio-2008 visual-studio
我也有同样的问题.但不同之处在于我的空行位于中间,我有超过50列.用户想要查看重复的行,这意味着我无法使用SELECT DISTINCT*FROM [excel]
空行可以在任何地方.到目前为止,我面临的最大优势超过100,000行.
是否有更有效的方法来删除空行或我必须循环并检查每一行中的所有列?
void SelectDataFromExcel()
{
string connectionString = ConfigurationSettings.AppSettings["ExcelConn"].ToString();
OleDbConnection excelConnection = new OleDbConnection(connectionString);
excelConnection.Open();
OleDbCommand dbCommand;
OleDbDataAdapter dataAdapter;
foreach (var sheet in Sheets)
{
dbCommand = new OleDbCommand("select DISTINCT* From[" + sheet + "$]", excelConnection);
System.Threading.Thread.Sleep(1000);
this.Invoke((MethodInvoker)delegate
{
listBox1.Items.Add("Tablo ismi: " + sheet.ToUpper(CultureInfo.InvariantCulture) + " Tablo Sat?r Say?s?: "+ dSet.Tables[sheet].Rows[0][0].ToString());
});
dataAdapter = new OleDbDataAdapter(dbCommand);
dTable = new DataTable();
dataAdapter.Fill(dTable);
dTable.TableName = sheet.ToUpper(CultureInfo.InvariantCulture);;
ArrangedDataList(dTable);
FillSqlTable(dTable, dTable.TableName);
dTable.Dispose();
dataAdapter.Dispose();
dbCommand.Dispose();
}
excelConnection.Close();
excelConnection.Dispose();
t1.Abort();
}Run Code Online (Sandbox Code Playgroud)
编辑
这将删除每个列包含任何内容或空格的所有行:
dataTable = dataTable.Rows.Cast<DataRow>().
Where(row => !row.ItemArray.All(field => field is System.DBNull ||
string.Compare((field as string).Trim(), string.Empty) ==
0)).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
预
获得成功的一种方法是检查空值
DataView dv = null;
dv = new DataView();
{
dv.Table = myDatatable;
dv.AllowDelete = true;
dv.AllowEdit = true;
dv.AllowNew = true;
dv.RowFilter = "myField = ' '";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8358 次 |
| 最近记录: |