Excel в DataGrid экспоненциальная проблема - PullRequest
0 голосов
/ 07 августа 2011

Я использую следующий код для отображения файла Excel в сетке данных, проблема в том, что большие числа отображаются в виде экспоненциальной формы, т.е. 1236548965132160 отображается как 1,23654896513216E + 15 в сетке,

string xlsxString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myFile.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";
OleDbConnection excelOleDBConnection = new OleDbConnection(xlsxString);
excelOleDBConnection.Open();

OleDbDataAdapter dataAdapterForExcelFile = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelOleDBConnection);
DataTable dataTableForTheAdapter = new DataTable();
dataAdapterForExcelFile.Fill(dataTableForTheAdapter);
this.dataGridView1.DataSource = dataTableForTheAdapter.DefaultView;

Мне нужно удалить эту экспоненциальную форму из кода, а не Excel, пожалуйста, предложите.

1 Ответ

1 голос
/ 07 августа 2011

Два варианта:

DataTable dataTableForTheAdapter = new DataTable();
dataAdapterForExcelFile.FillSchema(dataTableForTheAdapter, SchemaType.Source);
for(int i = 0; i < dataTableForTheAdapter.Columns.Count; i++)
   if (dataTableForTheAdapter.Columns[i].DataType == typeof(double))
      dataTableForTheAdapter.Columns[i].DataType = typeof(decimal);
dataAdapterForExcelFile.Fill(dataTableForTheAdapter);

или

     this.dataGridView1.DataSource = dataTableForTheAdapter.DefaultView;
     for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
     {
        if (this.dataGridView1.Columns[i].ValueType == typeof(double))
           this.dataGridView1.Columns[i].DefaultCellStyle.Format = "N";
     }
...