C# импорт из EXCEL не загружает первую ячейку
все достало... любил я это дело очень долго. В программе происходит выбор одного либо нескольких документов формата excel с последующей загрузкой в datagridview, после получившиеся строки и ячейки обрабатываются внутренними механизмами, но тут попался один файл... который прибит гвоздями и изменять его никакой поставщик не хочет... суть проблемы в том, что если первая ячейка имеет "перенос текста", то ячейка 1:1 не загружается в datagridview.
если же ячейка не имеет переноса текста, то загрузка происходит как нужно
аналогичная ситуация происходит, если этот excel файл открыт ( первая ячейка отображается в DGV ) иначе этой ячейки нет... прикладываю кусок кода кнопки загрузки excel я а так же этот чертов файл.... может кто сталкивался с таким багом. версию excel я не возможно поднять...
excel файл
public void down()// загрузка
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;
dialog.Filter = "Файл Excel|*.xlsx;*.xls;";
try
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string[] selectedFiles = dialog.SafeFileNames;
string[] filePaths = dialog.FileNames;
DataSet ds = new DataSet();
DataTable dt = new DataTable();
foreach (string file1 in (string[])dialog.FileNames)
{
String constr = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""", file1);
OleDbConnection myConnection = new OleDbConnection(constr);
myConnection.Open();
DataTable spreadSheetData = myConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = "";
OleDbCommand onlineConnection;
OleDbDataAdapter theDataAdapter;
foreach (DataRow dr in spreadSheetData.Rows)
{
sheetName = dr["TABLE_NAME"].ToString();
sheetName = sheetName.Replace("'", "");
if (sheetName.EndsWith("$"))
{
onlineConnection = new OleDbCommand("SELECT * FROM [" + sheetName + "A1:Y100"+"]", myConnection);
theDataAdapter = new OleDbDataAdapter(onlineConnection);
dt.TableName = (String.IsNullOrEmpty(dt.TableName)) ? sheetName : dt.TableName;
theDataAdapter.Fill(dt);
}
}
myConnection.Close();
}
ds.Tables.Add(dt);
dataGridView1.DataSource = ds.Tables[0];
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
}
}
}
catch
(Exception ex)
{ MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла"); }
}