SqlBulkCopy与列映射之外的C#边界exception

我遇到一个问题,而使用SqlBulkCopy将一些数据从Excel复制到SQL Server表。

基本上,我需要将Excel文件的一些行的所有内容复制到表中。 我有这个工作使用直SqlBulkCopy没有列映射,但只有修改后的Excel文件(删除当前未使用/空列)。 由于我们的工作stream程,我们需要Excel文件保持不变,所以我尝试使用列映射。 (我宁愿避免使用临时表来工作,因为我的SQL技能不是那么好)

我的代码下面的作品完美,除了它不复制最后的11列。 如果我增加最后的数字(213)到224来尝试包含这些,我得到一个IndexOutOfRangeException错误。

数据读取器说有一个字段数为212(这是多less非空白列,但实际总的列数是224.如果我尝试没有列映射,数据closures(右)由12列组成。

 using (DbConnection excelConnection = factory.CreateConnection()) { SqlConnection sqlConn = new SqlConnection(sqlConnectionString); excelConnection.ConnectionString = connString; using (DbCommand command = excelConnection.CreateCommand()) { command.CommandText = "SELECT * FROM [Master List$A18:HD" + (17 + cusipcount) + "]"; sqlConn.Open(); excelConnection.Open(); using (DbDataReader dr = command.ExecuteReader()) { using (SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlConnectionString)) { bulkcopy.DestinationTableName = "Bond"; int i = 0; for (int j = 0; j < 27; j++, i++) { bulkcopy.ColumnMappings.Add(j, i); } for (int j = 28; j < 94; j++, i++) { bulkcopy.ColumnMappings.Add(j, i); } for (int j = 105; j < 215; j++, i++) { bulkcopy.ColumnMappings.Add(j, i); } bulkcopy.WriteToServer(dr); } } excelConnection.Close(); sqlConn.Close(); } 

所以,基本上我需要我得到212,J到224。我只是不知道如何让我的源指数大于212抓住最后的11列数据。 这就像我的列映射由于某种原因受到字段数的限制。 有没有办法解决?