2012-01-12 6 views
0

を使用したデータの数をエクセル:私はExcelにデータ未満の65000行を記述しようとすると、それが動作します。私は以上65000行を記述しようとする。しかし、エラーが発生します。エラーは、私がOLEDBに</p> <p>問題を使用してExcelにデータを挿入して、問題を取得OLEDB

スプレッドシートがいっぱいになっている

私は一度に日付を書くには限界があると思います...

I以上1,000,000書き込むためのデータの行...

ラインは6列で構成され、appoximately 100文字をここで

は私のソースタラされていe。

private static OleDbConnection CreateConnection(string ExcelPath) 
    { 
     OleDbConnectionStringBuilder ConnectionBuilder = new OleDbConnectionStringBuilder(); 
     ConnectionBuilder.Provider = "Microsoft.Jet.OLEDB.4.0"; 
     ConnectionBuilder.DataSource = ExcelPath; 
     ConnectionBuilder.Add("Extended Properties", "Excel 8.0"); 
     return new OleDbConnection(ConnectionBuilder.ToString()); 
    } 

using (OleDbConnection Connection = CreateConnection(@"C:\userinfo.xls")) 
     { 
      Connection.Open(); 
      OleDbCommand tempCmd = Connection.CreateCommand(); 
      tempCmd.CommandText = CreateTableQury(dt, "Sheet1"); 
      tempCmd.ExecuteNonQuery(); 
      tempCmd.CommandText = CreateInsertQuery(dt, tempCmd.Parameters, "Sheet1"); 
      int extime = 1; 
      foreach (DataRow Row in dt.Rows) 
      { 
       for (int t = 0; t < tempCmd.Parameters.Count; t++) 
       { 
        tempCmd.Parameters[t].Value = Row[t]; 

       } 
       tempCmd.ExecuteScalar(); 
       extime++; 
       if ((extime % 1000) == 0) 
       { 
        Console.WriteLine("EXCEL " + extime + " Line/time:" + sw.Elapsed.ToString()); 
       } 
      } 
      Connection.Close(); 
     } 


public static string CreateTableQury(DataTable Table, string SheetName) 
    { 
     string Query = "CREATE TABLE [" + SheetName + "] ("; 

     for (int i = 0; i < Table.Columns.Count; i++) 
     { 
      Query += Table.Columns[i].ColumnName + " text"; 
      if (i < Table.Columns.Count - 1) Query += ", "; 
      else Query += ")"; 
     } 

     return Query; 
    } 

    public static string CreateInsertQuery(DataTable Table, OleDbParameterCollection Parameters, string SheetName) 
    { 

     string Query = @"INSERT INTO [" + SheetName + "] VALUES ("; 

     for (int i = 0; i < Table.Columns.Count; i++) 
     { 
      Query += "@Param" + i.ToString(); 

      if (i < Table.Columns.Count - 1) Query += ", "; 
      else Query += ")"; 

      OleDbParameter Parameter = new OleDbParameter("@Param" + i.ToString(), DbType.String); 
      Parameters.Add(Parameter); 

     } 

     return Query; 
    } 
+0

Excelをatleast 2007バージョンにアップグレードするか、列をまたいで展開する必要があります – V4Vendetta

+0

それでは、ファイルが2007年用ではないと思われます。userinfo. ** xls ** ' – V4Vendetta

+0

また、Microsoft .Jet.OLEDB'でも – V4Vendetta

答えて

1

それかもしれないあなたは2007年に2003 Excelを開いたとき、それは以上65000行を持っていないので、あなたが2003年にオープンしたバージョン。

したがって、Excel 2007を保存してお試しください。

関連する問題