【发布时间】:2021-03-04 13:55:36
【问题描述】:
我想将 xls 文件中的数据导入我的 datagridview,但我不断收到错误消息:输入数组大于列数。我该如何解决?我在这一行得到错误:_table.Rows.Add(data_col);
这是我的代码:
private void OpenXlsToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog ExcelÖffnen = new OpenFileDialog()
{
Title = "Open Excel Files",
CheckPathExists = true,
DefaultExt = "txt",
Filter = "Excel files (*.xls)|*.xls",
FilterIndex = 1,
RestoreDirectory = true
};
if (ExcelÖffnen.ShowDialog() == DialogResult.OK)
{
string[] raw_txt = File.ReadAllLines(ExcelÖffnen.FileName);
string[] data_col = null;
int x = 0;
foreach (string txt_line in raw_txt)
{
string[] vs = txt_line.Split(';');
data_col = vs;
if (x == 0)
{
for (int i = 0; i <= data_col.Count() - 1; i++)
{
_table.Columns.Add(data_col[i]);
}
x++;
}
else
{
_table.Rows.Add(data_col);
}
}
}
任何帮助都会很好:)
提前致谢
【问题讨论】:
-
xls是一个二进制文件(也许你想使用 csv 或先将 xls 转换为 csv?)。您不能使用ReadAllLines阅读它,也不能使用;拆分文本来获取项目,而是需要一个库。您收到错误是因为第一行(用于生成列)的项目比其他行少。 -
你知道如何将其转换为 csv 吗?
-
在 excel 中打开 xls 并另存为(导出?)到 csv。或者你想以编程方式convert it?顺便说一句,解析 csv 也不是那么简单的任务,您可能仍然需要为此使用库。
-
上次你问这个问题时我告诉过你,你需要一个库来读取 excel 文件,它们不是简单的文本。
-
如前所述,您需要一个 Excel 库来读取代码中的 Excel 文件。为了帮助您决定使用哪个库,您需要了解代码将在“何处”运行,以及您是否愿意为该库“付费”。我建议您阅读@Sinatr 第一个链接中的所有答案和 cmets。在选择特定库之前,需要考虑许多因素。
标签: c# import datagridview xls