Excel Worksheet.Usedrange返回什么types

我正在将应用程序从vba转换为C#。 这很慢。 这是我的第一个挑战

在vba中,我可以将一个Excel范围分配给一个vba二维数组:

Dim strSheetArray as Variant strSheetArray = xlSH.UsedRange ... debug.print strSheetArray[1,2] 'etc. 

当我转换为C#时,“UsedRange”属性似乎返回一个对象。 我似乎无法像数组那样使用该对象,从而导致代码错误。 那么,如何引用返回的对象,以便我可以遍历它呢?

而且,只要我在它,细胞没有types,所以我怎么使用它们(有些是数字,其他是文本等)。这是很容易的VBA ….

谢谢您的帮助。

它返回一个Range接口。 你可以在MSDN上阅读更多。

而且,只要我在它,细胞没有types,所以我怎么使用它们(有些是数字,其他是文本等)。这是很容易的VBA ….

单元格确实有一个types,但它们只是对象。你将不得不投入你想要的东西。 所以如果单元格是文本,你将不得不这样做:

 (string)xlSheet.Cells[row,col].Value2 

要么

 xlSheet.Cells[row,col].Value2.ToString(); 

如果你知道他们是数字,你也必须转换成数字types。


编辑评论:

所以如果你想获得使用的范围,你可以这样做:

 using Excel = Microsoft.Office.Interop.Excel; Excel.Range range = xlSheet.UsedRange; 

这将给你从工作表中的一切(我用variablesxlSheet,这是Excel.Worksheet)。

现在我们可以通过下面的方法来进行迭代:

 int rows = range.Rows.Count; int cols = range.Columns.Count; for(int r=1; r <= rows; r++) { for(int c=1; c <= cols; c++) { Console.Write(range.Cells[r,c].Value2.ToString()); } Console.WriteLine(); } 

这将遍历范围,并基本上复制控制台窗口中的电子表格中的内容。 我希望这有帮助。 我还写了一篇关于使用C#阅读Excel电子表格的博客文章,如果您愿意,可以在这里阅读。