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电子表格的博客文章,如果您愿意,可以在这里阅读。