gpt4 book ai didi

c# - 如何在 C# 中将对象 [,] 转换为数据表

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:55 24 4
gpt4 key购买 nike

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

我将返回类型设置为 object[,]。我不确定它到底指定了什么。我知道 object[] 是对象数组。

不确定 object[,] 。我尝试使用谷歌搜索,但没有找到任何有用的解释。

此外,我想将其转换为数据表并将其绑定(bind)到 winforms 中的数据 GridView 。

我们是否需要在绑定(bind)之前将上述数组转换为数据表,或者是否有任何其他方法可以将其绑定(bind)到网格?

请给我一些想法以提醒我。

请找到以下代码:

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());

关于c# - 如何在 C# 中将对象 [,] 转换为数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com