1

更新1:

我正在使用 Excel 2010,我在网上搜索并找到了成千上万种通过 win 表单、控制台等执行此操作的方法。但我找不到通过 DLL 执行此操作的方法。并且没有一个在线样本是完整的。

更新结束

我已经看了看,但没有得到我正在寻找的具体内容,如下面的 excel 样本表所示。

我正在寻找一种方法来读取每个单元格数据并将其存储在变量中

我已经开始这样的事情:

Workbook workbook = open(@"C:\tmp\MyWorkbook.xls");
IWorksheet worksheet = workbook.Worksheets[0];
IRange a1 = worksheet.Cells["A1"];
object rawValue = a1.Value;
string formattedText = a1.Text;
Console.WriteLine("rawValue={0} formattedText={1}", rawValue, formattedText);

电子表格

4

3 回答 3

2
Excel.Sheets sheets = workbook.Worksheets;

Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);


System.Array myvalues;


Excel.Range range = worksheet.get_Range("A1", "E1".ToString());

myvalues = (System.Array)range.Cells.Value;
于 2012-08-15T22:43:40.593 回答
2

您的代码可以进行一些更改。

要记住的一件事是 Excel 工作表是基于 1 的,而不是基于 0 的(并且使用 Worksheet 而不是 IWorksheet):

Worksheet worksheet = workbook.Worksheets[1];

要获得一个范围,最简单的方法是调用get_Range()工作表对象(并使用 Range 而不是 IRange):

Range a1 = worksheet.get_Range("A1");

更改这两行代码后,您的示例将正常工作。

更新

这是一个“完整”的例子:

  1. 在解决方案资源管理器中右键单击您的项目,然后单击“添加引用”。
  2. 单击 COM 选项卡并按组件名称对列表进行排序。在列表中找到“Microsoft Excel 14.0 Object Library”并选择它。单击确定。
  3. 在您希望它运行的代码文件中,添加一个using Microsoft.Office.Interop.Excel;
  4. 使用此代码,我已从您的示例中尽可能少地对其进行了修改:

var excel = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = excel.Workbooks.Open(@"C:\tmp\MyWorkbook.xls");
Worksheet worksheet = workbook.Worksheets[1];
Range a1 = worksheet.get_Range("A1");
object rawValue = a1.Value;
string formattedText = a1.Text;
Console.WriteLine("rawValue={0} formattedText={1}", rawValue, formattedText);
于 2012-08-15T23:58:21.950 回答
0

如果您不想与 com 组件和注册 dll 发生争执,

阅读 excel 的最佳方式是Excel Reader for .NET

我已经使用它很长时间了,我可以说它确实有效。

财产excelReader.IsFirstRowAsColumnNames使一切变得容易。您可以在数据集中播放数据。

于 2012-08-15T23:12:51.547 回答