0

私の要件として、データの下に挿入しようとしています。例:このような私の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();

            }
        }
4

2 に答える 2

1

これを行う組み込みの方法はありませんが、自分で行うのはかなり簡単です。

  1. で文字列を分割して、,個別の値を取得します
  2. で結果を分割して-、範囲の制限を取得します。1 つの結果 = 範囲なし。2 つの結果 = 下限と上限なので、その間のすべての数値を出力します。

ここで使用する主なメソッドは.Split()です。

完全な実装は、読者への演習として残されています :-)

編集
1 つの元の値を潜在的に多くの新しい値に変えることに注意してください。1 つの入力行を処理するには、1 つの「挿入」では不十分です。

于 2013-04-17T07:16:29.400 に答える
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
  }
}
于 2013-04-17T07:16:35.737 に答える