I'm working on a simple desktop application that does the following:
1 - Reads in an Excel spreadsheet into a DataGridView as follows:
Expand|Select|Wrap|Line Numbers
- try
- {
- string strConnectionString = "";
- if (header)
- {
- strConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
- "Data Source=" + strFilePath + ";Jet OLEDB:Engine Type=5;" +
- "Extended Properties=\"Excel 8.0;HDR=Yes\"";
- }
- else
- {
- strConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
- "Data Source=" + strFilePath + ";Jet OLEDB:Engine Type=5;" +
- "Extended Properties=\"Excel 8.0;HDR=No\"";
- }
- OleDbConnection cnCSV = new OleDbConnection(strConnectionString);
- cnCSV.Open();
- OleDbCommand cmdSelect = new OleDbCommand(@"SELECT * FROM [Sheet1$]", cnCSV);
- OleDbDataAdapter daCSV = new OleDbDataAdapter();
- daCSV.SelectCommand = cmdSelect;
- dtCSV = new DataTable("Batch");
- daCSV.Fill(dtCSV);
- cnCSV.Close();
- daCSV = null;
- return dtCSV;
- }
3 - I then parse through the grid verifying the values in the cells match a specified length, type, etc.
4 - output the grid values to a csv file.
Everything is pretty much working except for parsing the values, and outputing the csv. After the columns are re-ordered, it seems like they retain their original index. So when I parse through like this:
Expand|Select|Wrap|Line Numbers
- for (int r = 0; r <= dgvMain.Rows.Count - 2; r++)
- {
- for (int c = 0; c <= dgvMain.Columns.Count; c++)
- {
- value = dgvMain.Rows[r].Cells[c].Value.ToString();
- }
- }