【问题标题】:How do I load all the data from an excel file into a C# textbox?如何将 excel 文件中的所有数据加载到 C# 文本框中?
【发布时间】:2015-06-18 03:22:47
【问题描述】:

所以我试图打开一个 excel 文件并用电子表格中的所有值填充一个文本框。每当我运行我的代码时,它都会从单元格 A1 中输入值,仅此而已。我不太确定我的循环做错了什么。请帮助并提前感谢您。

private void LoadButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog loadFile = new OpenFileDialog();
            if (loadFile.ShowDialog() == DialogResult.OK)
            {
                string rowsAndColumns = "";
                fileName = loadFile.FileName;
                Excel.Application myApp = new Excel.Application();
                myApp.Visible = false;
                Excel.Workbook myBook = myApp.Workbooks.Open(fileName);
                Excel.Worksheet mySheet = myBook.Sheets[1];

                object[,] words = (object[,])mySheet.UsedRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);


                for (int row = 1; row <= mySheet.UsedRange.Row; row++)
                {
                    for (int column = 1; column <= mySheet.UsedRange.Column; column++)
                    {
                        rowsAndColumns += words[row, column];
                    }
                    rowsAndColumns += Environment.NewLine;
                }
                BasicTextBox.Text = rowsAndColumns;
            }
        }

【问题讨论】:

  • 只有两个小建议:(1) 使用StringBuilder 类来构建您的字符串,而不是与+ 连接。 (2) 确保当范围内只有一个单元格时可以避免错误(此处描述的问题stackoverflow.com/questions/7383304/…)。我知道这不是您问题的答案,但它仍然可能会有所帮助;)。

标签: c# excel loops


【解决方案1】:

试试这些改变:

for (int row = 1; row <= mySheet.UsedRange.Row.Count; row++)

for (int column = 1; column <= mySheet.UsedRange.Column.Count; column++)

rowsAndColumns += words[row, column].ToString();

【讨论】:

  • 由于某种原因,Count 给了我一个错误,所以我使用了 mySheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Column,这似乎有效。谢谢你的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 2017-04-23
  • 2022-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多