UPDATE1:
我正在使用Excel 2010,我搜索了网络,并通过win form,console等找到了成千上万的方法。但我找不到通过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);
答案 0 :(得分: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;
答案 1 :(得分:2)
您的代码可以使用一些更改。
要记住的一件事是Excel工作表是基于1的,而不是基于0的(并使用Worksheet而不是IWorksheet):
Worksheet worksheet = workbook.Worksheets[1];
要获得范围,最简单的方法是在工作表对象上调用get_Range()
(并使用Range而不是IRange):
Range a1 = worksheet.get_Range("A1");
通过更改这两行代码,您的示例将正常工作。
<强>更新强>
这是一个“完整”的例子:
using Microsoft.Office.Interop.Excel;
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);
答案 2 :(得分:0)
如果你不想与com组件发生战争并注册dll,
阅读Excel的最佳方式是Excel Reader for .NET
我已经使用了很长时间了,我可以说它只是有效。
和excelReader.IsFirstRowAsColumnNames
属性使一切变得简单。
您可以在数据集中播放数据。