3

下面是我正在使用的代码,我以前用过这个 100x。现在它抛出了一个错误,基本上我正在尝试根据 excel 文件的第一行动态创建列。我现在收到的错误是:

The call is ambiguous between the following methods or properties: 'System.Data.DataColumnCollection.Add(System.Data.DataColumn)' and 'System.Data.DataColumnCollection.Add(string)'

DataTable excel_Holding_Table = new DataTable();
        DataRow row;
        Microsoft.Office.Interop.Excel.Range range = workSheet.UsedRange;
        for (int i = 1; i <= range.Columns.Count; i++)
        {
            excel_Holding_Table.Columns.Add(Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, i]).Value2));
        }

我需要做些什么来防止这种情况发生,这从未出现过。

这是我的使用:

使用系统;
使用 System.Collections.Generic;
使用 System.ComponentModel;
使用 System.Data;
使用 System.Drawing;
使用 System.Linq;
使用 System.Text;
使用 System.Windows.Forms;
使用 System.Runtime.InteropServices;
使用 System.IO;
4

1 回答 1

4

我的猜测是Convert.ToString正在返回null,但是因为您是Add动态调用的,所以它无法根据实际类型计算出重载。

幸运的是,我们可以在提高代码可读性的同时修复问题:

for (int i = 1; i <= range.Columns.Count; i++)
{
     // Note: Add using directive for Microsoft.Office.Interop.Excel
     Range range = (Range) workSheet.Cells[1, i];
     string value = Convert.ToString(range.Value2);
     excel_Holding_Table.Columns.Add(value);
}
于 2012-06-20T20:10:17.983 回答