Ошибка при чтении загруженного файла .xls excel в asp.net - PullRequest
1 голос
/ 15 сентября 2010

Я создал программу, в которой я читаю множество записей из базы данных и затем сохраняю их в сетке данных. Отсюда я заставляю пользователя загружать файл как файл Excel.

Теперь пользователь вносит изменения в файл, а затем снова загружает его, и отсюда я читаю загруженный файл .xls и вносю необходимые изменения в БД.

Проблема в том, что когда пользователь загружает обновленный файл Excel, я не могу получить к нему доступ и получить ошибку.

Внешний стол не соответствует ожидаемому формат

Я заставляю пользователя загружать файл как

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            // first let's clean up the response.object
            response.Clear();
            response.Charset = "";
            // set the response mime type for excel
            response.ContentType = "application/vnd.ms-excel";
            response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
            // create a string writer
            using (System.IO.StringWriter sw = new System.IO.StringWriter())
            {
                using (System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw))
                {
                    // instantiate a datagrid
                    System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
                    dg.DataSource = dt;
                    dg.DataBind();
                    dg.RenderControl(htw);
                    response.Write(sw.ToString());
                    response.End();
                }
            }

Пользователь загружает файл после внесения изменений, и я читаю его как

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                "Data Source=" + path + "\\" + FileUpload1.FileName + ";Extended Properties=Excel 8.0;";
                    OleDbConnection oledbConn = new OleDbConnection(connString);

                    oledbConn.Open();

                    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [$Sheet1 ", oledbConn);
                    OleDbDataAdapter oleda = new OleDbDataAdapter();
                    oleda.SelectCommand = cmd;

                    DataSet ds = new DataSet();

                    oleda.Fill(ds, "Employees");

Пожалуйста, помогите. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Да, я согласен с Брайаном! возможно, вы генерируете другой формат .xlsx, который хотите прочитать.

Попробуйте это: http://www.aspdotnet -suresh.com / 2010/09 / import-data-from-excel-to-sql-database.html

0 голосов
/ 13 апреля 2011

Возможно ли, что генерируемая вами версия файла XLS не может быть прочитана OLEDB? Excel 8 - это Excel 97, и вы, скорее всего, будете создавать формат Excel 2007 .xlsx.

...