C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn )' and ' System.Data.DataColumnCollection.Add(string)

标签 c#

下面是我正在使用的代码,我以前用过这个 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/

相关文章:

javascript - 将复杂对象从 Angular 发送到 SignalR

c# - 看似无辜的 .NET 正则表达式使页面响应时间增加 10 倍

c# - Equals 中的 SequenceEqual 导致 GetHashCode 损坏

c# - 设置为透明时控件中的黑色背景色

c# - Umbraco,请求通过错误的 RenderMvcController 路由

c# - 编译器如何从 LAMBDA 表达式推断委托(delegate)类型?

c# - Java 和 C# 类属性

c# - 基于数据库中的另一个字段自动增加 id

c# - 从 MVC 中的 web api 身份验证 token 中提取用户详细信息

c# - Linq 方法正文最佳实践问题