Veeshal Mali Ответов: 1

Импорт excel в datatable, а затем gridview, но дата не отображается ?


Всем привет,
У меня есть один файл excel, который я хочу импортировать в Grdiview in asp.net c#.
У меня есть записи в gridview но некоторые даты не отображаются в gridview.
мой код таков.
if (FileUpload1.HasFile)
       {
           ddlParty.Enabled = true;
       }
       String strConnection = "ConnectionString";
       string connectionString = "";
       if (FileUpload1.HasFile)
       {
           string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
           string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);
           string fileLocation = Server.MapPath("~/App_Data/" + fileName);
           FileUpload1.SaveAs(fileLocation);
           if (fileExtension == ".xls")
           {
               connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                 fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
           }
           else if (fileExtension == ".xlsx")
           {
               connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                 fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
           }
           OleDbConnection con = new OleDbConnection(connectionString);
           OleDbCommand cmd = new OleDbCommand();
           cmd.CommandType = System.Data.CommandType.Text;
           cmd.Connection = con;
           OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
           DataTable dtExcelRecords = new DataTable();
           con.Open();
           DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

           string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
           cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
           dAdapter.SelectCommand = cmd;
           dAdapter.Fill(dtExcelRecords);

           gvExcelFile.DataSource = dtExcelRecords;
           gvExcelFile.DataBind();
       }

Вот моя ссылка на файл Excel

Поэтому, пожалуйста, помогите мне решить мою проблему.

Что я уже пробовал:

Я пробовал код и менял формат даты в файле excel с ячейками формата так много раз и с таким количеством типов. Но решения так и не получил.

Richard MacCutchan

Какие поля не отображаются и каковы их значения в рабочей книге?

Veeshal Mali

PODate и DeliverySchedule эти поля не отображаются, и значения похожи на это "18.08.2016", в котором дата имеет более 12.

Richard MacCutchan

Больше 12 чего? Пожалуйста, предоставьте полную информацию о вашей проблеме.

Richard MacCutchan

Хорошо, я думаю, что знаю, что происходит. В вашей электронной таблице есть некоторые поля даты, которые являются цитируемым текстом, например "18/08/2016", включая символы двойной кавычки. Похоже, что OLEDB по какой-то причине игнорирует эти поля. Я посмотрю немного поближе.

Veeshal Mali

Хан Да сэр, когда дата, как 7/7/2017 или 11/8/2017 или 12/8/2017 в excel он будет пикап и показать в виде сетки, но когда дата превышает дату более чем 12, как 13/06/2017 или 18/06/2017 он не будет пикап и показать в gridview

1 Ответов

Рейтинг:
7

Richard MacCutchan

Вам нужно установить этот параметр "IMEX=1" в строке подключения, как описано в Работа с MS Excel(xls / xlsx) Использование MDAC и Oledb[^] чтобы убедиться, что OLEDB не игнорирует поля, которые не являются датами.


Veeshal Mali

eeeuuuuu..... это работает.....
Большое спасибо, сэр... все работает... когда я ставлю "IMEX=1 "в строку подключения, а не"IMEX=2"...