我正在 C#中开发 Windows窗体应用程序。我的程序将读取excel单元格中的值,并将数据插入DataGridView以显示用户。
在我读完excel文件后,我得到了字符串数组中的结果。如何插入DataGridView?
private void btnImport_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application ExcelObj = null;
ExcelObj = new Microsoft.Office.Interop.Excel.Application();
if (ExcelObj != null)
{
if (tbxFileDirectory.Text != "")
{
Workbook workbook = ExcelObj.Workbooks.Open(
openFD.FileName, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true);
Sheets sheets = workbook.Worksheets;
//Get excel sheet number
Worksheet worksheet = (Worksheet)sheets.get_Item(1);
for (int i = 6; i <= worksheet.UsedRange.Rows.Count; i++)
{
Range range = worksheet.get_Range("A" + i.ToString(), "K" + i.ToString());
Array myvalues = (Array)range.Cells.Value;
string[] strArray = ConvertToStringArray(myvalues);
//INSERT INTO DATAGRIDVIEW
}
MessageBox.Show("File was imported successfully");
}
else
{
MessageBox.Show("Please select the file to import.");
}
}
else
{
MessageBox.Show("ERROR: EXCEL couldn't be started!");
}
}
我的DataGrid有4列,ProductID,ProductName,Price,&amp;数量。我想插入这些值,strArray [0],strArray [1],strArray [9]&amp; strArray [10]在每一列中。我怎样才能做到这一点?任何帮助将不胜感激!
答案 0 :(得分:2)
你可以这样做
dataGridView1.Rows.Add(strArray[0],strArray[1]......);
答案 1 :(得分:2)
DataGridView在直接插入字符串时会出现性能问题,如果您拥有的只是网格本身中的数据,那么操作数据会很麻烦(尽管显然您需要从excel解析数据)。通常最好将数据放入DataTable中,然后将其绑定到网格中。
如果您需要通过代码将数据填充到DataTable中的示例,请参阅Add new column and data to datatable that already contains data - c#。
绑定很简单,将DataTable分配给网格的DataSource属性。
如果您获得的行数超过几百行,您可能仍然会看到性能问题 - 但是,通过将逻辑更改为虚拟化数据,请参阅DataGridView live display of datatable using virtual mode以获取一个简单示例。