我怎样才能读取我的C#代码使用DLL的Excel 2010文件?
UPDATE1:
我正在使用Excel 2010,我已经search了网页,发现成千上万的方式来通过赢取窗体,控制台等,但我找不到通过DLL来做到这一点。 没有一个在线样本是完整的。
更新结束
我已经看了,看了一眼,但没有得到具体的东西,我正在寻找,如下所示的Excel样本表。
我正在寻找一种方法来读取和存储每个单元格数据在一个variables
我已经开始了这样的事情:
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);
你的代码可以与一些变化一起工作。
有一点要记住的是,Excel工作表是基于1的,而不是基于0(并使用工作表而不是IWorksheet):
Worksheet worksheet = workbook.Worksheets[1];
为了得到一个范围,最简单的方法是在工作表对象上调用get_Range()
(并使用Range而不是IRange):
Range a1 = worksheet.get_Range("A1");
随着这两行代码的改变,你的例子将正常工作。
UPDATE
这是一个“完整”的例子:
- 在解决scheme资源pipe理器中右键单击您的项目,然后单击“添加引用”。
- 点击COM选项卡,按组件名称对列表进行sorting。 在列表中find“Microsoft Excel 14.0对象库”并select它。 点击OK。
- 在要运行的代码文件中,添加一个
using Microsoft.Office.Interop.Excel;
- 使用这个代码,我已经尽可能less地修改了你的例子:
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);
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;
如果你不想和com组件一起交战并注册dll,
读取excel的最佳方法是用于.NET的Excel Reader
我一直在使用它很长一段时间,我可以说这是正常的。
和excelReader.IsFirstRowAsColumnNames
属性使一切都变得简单。 你可以在数据集中播放你的数据。