下面是我正在使用的代码,我以前用过这个 100x。现在它抛出一个错误,基本上我正在尝试根据 excel 文件的第一行动态创建列。我现在收到的错误是:
以下方法或属性之间的调用不明确:“System.Data.DataColumnCollection.Add(System.Data.DataColumn)”和“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));
}
我需要做什么来防止这种情况发生,这从来没有出现过。
这是我的用法:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO;
最佳答案
我的猜测是 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);
}
关于C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn )' and ' System.Data.DataColumnCollection.Add(string),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127318/