我正在使用OLEDB来插入现有的Excel工作表。但我想以某种顺序插入。所以我有这个:
File.Copy(lTemplateFolder + lFilename, lDistributorFolder + lFilename, true);
string lConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + lDistributorFolder + "\\" + lFilename + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
DbProviderFactory lFactory = DbProviderFactories.GetFactory("System.Data.OleDb");
int lSequence = 0;
using (DbConnection lConnection = lFactory.CreateConnection())
{
lConnection.ConnectionString = lConnectionString;
lConnection.Open();
foreach (DataRowView rowView in dv)
{
DataRow row = rowView.Row;
lSequence++;
using (DbCommand lCommand = lConnection.CreateCommand())
{
lCommand.CommandText = "INSERT INTO [Sheet1$]";
lCommand.CommandText += "([First Name],[Last Name],[Title],[Company],[Address],[Address 2],[City],[State],[Zip],[Country],[Work phone],[Email],[Website],[Stamp Time],[Campaign],[Source],[Business Unit],[Market Segment],[Notes]) ";
lCommand.CommandText += "VALUES(";
lCommand.CommandText += "\"" + row["name"].ToString().Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["lastname"].ToString().Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["title"].ToString().Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["company"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["address"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["address2"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["city"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["state"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["zip"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["country"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["workphone"].ToString() + "\",";
lCommand.CommandText += "\"" + row["email"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["website"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["stamptime"].ToString() + "\",";
lCommand.CommandText += "\"" + row["campaign"].ToString().Replace("\"","\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["source"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + row["notes"].ToString().Replace("\"", "\"\"").Replace(" ", " ") + "\",";
lCommand.CommandText += "\"" + "High" + "\"";
lCommand.CommandText += ")";
lCommand.ExecuteNonQuery();
}
}
lConnection.Close();
}
所以我想做的是取row["notes"].ToString()
并按row["notes"].ToString().Count()
对插入进行排序,以便首先插入最长的音符字符串,依此类推。这可能吗?如果是这样我会怎么做呢?
谢谢!
答案 0 :(得分:1)
您只需将所有DataView(来自Excel)加载到列表中,然后按行[“notes”]的值对此列表进行排序,即可按所需顺序插入。
DataView d = null;//Load from Excel
var rows = (from DataRowView rowView in d select rowView.Row).ToList();
foreach (DataRow dataRow in rows.OrderByDescending(r=>(int)r["notes"]))
{
//Insert code here that you already have
}