如何将对象转换为C#中的数据表

我正在使用Interop lib从excel文件读取数据 我能够连接到Excel并从中读取数据。

我得到返回types为对象[,]。 我不确定它究竟是什么。 我知道object []是对象数组。

不确定object[,] 。 我尝试了谷歌search,但没有find任何有用的解释。

此外,我想将其转换为数据表,并将其绑定到winforms中的数据网格视图。

我们是否需要在绑定之前将上面的数组转换为数据表单,还是有其他方法将其绑定到网格?

请给我一些想法来抬头。

请find下面的代码:

 void ReadSheetData(string strFilePath) { Workbook workBook = _excelApp.Workbooks.Open(strFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); int numSheets = workBook.Sheets.Count; for (int sheetNum = 1; sheetNum < numSheets + 1; sheetNum++) { Worksheet sheet = (Worksheet)workBook.Sheets[sheetNum]; Range excelRange = sheet.UsedRange; object[,] valueArray = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault); PrepareData(valueArray); } } System.Data.DataTable PrepareData(object[,] valueArray) { System.Data.DataTable dtTemp = new System.Data.DataTable(); dtTemp=????? // How to convert object[,] to datatable return dtTemp; } 

您可以使用第一个索引和第二个索引数组长度来枚举行和列。

 var rowCount = valueArray.GetLength(0); var columnCount = valueArray.GetLength(1); var dtTemp = new DataTable(); foreach(var c in Enumerable.Range(1, columnCount)) dtTemp.Columns.Add(); foreach (var r in Enumerable.Range(1, rowCount)) dtTemp.Rows.Add(Enumerable.Range(1, columnCount) .Select(c => valueArray[r - 1, c - 1]).ToArray());