我正在尝试插入以插入以下数据作为我的要求。 例如:我的excel表格如下:
id name codes
1 a 12
2 b 13,14,15
3 c 16-19
我的要求是这样的:
id name codes
1 a 12
2 b 13
2 b 14
2 b 15
3 c 16
3 c 17
3 c 18
3 c 19
我正在使用c#。 谁能帮我.... thnx提前。
我的代码:
for (rCnt = 2; rCnt <= range.Rows.Count; rCnt++)
{
cmd = "insert into " + tablename + " values (";
effective_date = VerifyDateTime(range.Cells[rCnt, 7].Value);
destination = (string)(range.Cells[rCnt, 1] as Excel.Range).Value2;
prefix = range.Cells[rCnt, 3].Value.ToString();
codes = range.Cells[rCnt, 2].Value.ToString();
level = range.Cells[rCnt, 5].Value.ToString();
rate = range.Cells[rCnt, 4].Value.ToString();
change = range.Cells[rCnt, 6].Value.ToString();
company_id = cmbcompanyid.SelectedItem.ToString();
string s = range.Cells[rCnt, 6].Value.ToString();
List<string> l = new List<string>(s.Split(';', '-'));
int le = 0;
for (le = 0; le <= l.Count; le++)
{
change = l[le];
cmd = cmd + "'" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + change + "','" + effective_date + "','" + company_id + "')";
// cmd = cmd + "'" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + change + "','" + effective_date + "','" + company_id + "')";
cmd = ReplaceSpecialCharacters(cmd);
MySqlCommand sqlCmd = new MySqlCommand(cmd, sqlCon);
var i = sqlCmd.ExecuteNonQuery();
}
}
答案 0 :(得分:1)
没有内置的方法可以做到这一点,但你自己很容易做到:
,
上的字符串以获取单独的值-
以获取范围限制。一个结果=没有范围;两个结果=下限和上限,所以在中间发出所有数字。此处使用的主要方法是.Split()。
完整的实施留给读者练习: - )
修改强>
请注意,您将一个原始值转换为可能的许多新值。单个&#39;插入&#39;是不足以处理一个输入行。
答案 1 :(得分:0)
你必须解析字符串,如下所示:
string[] items = value.Split(",");
foreach (string item in items) {
if (item.Contains("-")) {
string[] parts = item.Split("-");
int min = Int32.Parse(parts[0]);
int max = Int32.Parse(parts[1]);
for (int i = min; i <= max; i++) {
// add the value in i to the data
}
} else {
// add the value in item to the data
}
}