c# - 将 Excel 范围转换为 ADO.NET 数据集或数据表等

标签 c# excel dataset range

我有一个 Excel 电子表格,可以放在网络共享驱动器上。它需要通过我的 Winforms C# 3.0 应用程序访问(许多用户可能正在使用该应用程序并同时点击此电子表格)。一张工作表上有很多数据。这些数据被分解成我命名为范围的区域。我需要能够单独访问这些范围,将每个范围作为数据集返回,然后将其绑定(bind)到网格。

我已经找到了使用 OLE 的示例,并且已经使它们起作用。但是,我看到了一些关于使用此方法的警告,而且在工作中我们一直使用 Microsoft.Office.Interop.Excel 作为迄今为止的标准。除非必须,否则我真的不想偏离这个。据我所知,我们的用户将使用 Office 2003。

我可以用下面的代码得到我需要的范围:

MyDataRange = (Microsoft.Office.Interop.Excel.Range)
    MyWorkSheet.get_Range("MyExcelRange", Type.Missing);

OLE 方式很好,因为它会将我的第一行转换为列。我的范围(总共 12 个)大部分在列数上彼此不同。不知道此信息是否会影响任何推荐。

有什么方法可以使用 Interop 并将返回的范围返回到数据集中吗?

最佳答案

内置函数我不知道,不过自己写应该不难吧。伪代码:

DataTable MakeTableFromRange(Range range)
{
   table = new DataTable
   for every column in range
   {
      add new column to table
   }
   for every row in range
   {
      add new datarow to table
      for every column in range
      {
         table.cells[column, row].value = range[column, row].value
      }
   }
   return table
}

关于c# - 将 Excel 范围转换为 ADO.NET 数据集或数据表等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458481/

相关文章:

c# - .NET 程序集绑定(bind),我可以将一个程序集映射到另一个程序集中的版本吗?

c# - 如何在 Visual Studio 中引用 CSS 背景图片?

deep-learning - 如何为情感分析构建和标记非英文数据集

c# - 如何使用远程计算机上的状态登录用户

c# - 将 UserControl 添加到 C# 中的变量位置

php - 转置数据并删除 Excel 或 SQL 上的重复项

c# - 截至目前,使用 COM 对象的正确方法是什么?

excel - 合并包含拆分数据的具有相同标题的列

c# - 使用 Linq 查询查找 DataTable 中列值不唯一的所有行

java - 检索仅具有 ChartPanel 引用的数据集(Java + JFreeChart)