Проблема ASP с OLEDB Exception для Excel Spreadsheet: «Внешняя таблица не в ожидаемом формате». - PullRequest
0 голосов
/ 12 июня 2019

Я создаю веб-сайт (ASP.NET/C#), чтобы просто извлекать и отображать данные из электронной таблицы Excel (предпочтительно xlsx или даже xls, если я смогу заставить его работать).Сайт предназначен для автоматизации с динамическим обновлением электронной таблицы из другого источника, что позволяет обновлять страницы для отображения последних данных.Несмотря на то, что существует множество различных вариантов решения этой проблемы с помощью других средств, для этого проекта самым простым для этого сайта будет получение данных из предоставленной электронной таблицы.

Я столкнулся с проблемой, когда кодкажется, не распознает формат базы данных, даже если файл xlsx.

Я попытался запустить OLEDB.JET, но обнаружил, что он больше не работает.Я переключился на OLEDB.ACE, но продолжаю сталкиваться с проблемами, когда файл вообще не загружается.

На моем сервере установлена ​​IIS версии 8, и я установил Access DB Engine, как было предложенона многих других ветках с похожими проблемами, где это, как говорили, было решением.Я также пробовал много разных файлов и форматов (существующие xlsx и xls, а также новые файлы со свежими данными, включая изменение имен файлов для включения и исключения пробелов) с теми же результатами.Я также изменил путь к файлу для нескольких разных стилей: получение с локального диска, виртуальный диск, как показано в приведенном ниже коде, а также извлечение из NAS и веб-ресурса - все тот же результат.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;


 namespace Test
 {
     public partial class _Default : Page
     {
        protected void Page_Load(object sender, EventArgs e)
        {
            string path = Server.MapPath(@"~/file/Full Inventory Export.xlsx");
            string ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1;\"";
            string query = "SELECT * FROM [Sheet1$]";
            var conn = new OleDbConnection(ConStr);  
            conn.Open();  
            var cmd = new OleDbCommand(query, conn);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);  
            gvData.DataSource = ds;  
            gvData.DataBind();
            conn.Close();  


        }
    }
}

// код главной страницы ниже для отображения содержимого

        <asp:GridView ID="gvData" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">  
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />  
            <EditRowStyle BackColor="#999999" />  
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />  
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />  
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />  
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />  
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />  
            <SortedAscendingCellStyle BackColor="#E9E7E2" />  
            <SortedAscendingHeaderStyle BackColor="#506C8C" />  
            <SortedDescendingCellStyle BackColor="#FFFDF8" />  
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />  
        </asp:GridView> 

Я ожидаю, что результатом будет объект GridView на главной странице с содержимым из электронной таблицы, но вместо этого меня встречают две разные ошибки.

В Visual Studio я получаю сообщение об ошибке OLEDB «Внешняя таблица не в ожидаемом формате».при выполнении теста с помощью функции IIS Express.

Я попытался опубликовать его на своем сервере, чтобы узнать, не получил ли я другую ошибку, и я делаю: «Не удалось загрузить файл или сборку« Test »или одну из еезависимости. Была сделана попытка загрузить программу с неверным форматом. "Похоже, это действительно та же самая ошибка, просто другая ее форма.

Я попробовал все, что могу найти в Stack Overflow и на любом другом веб-ресурсе, чтобы это работало.У кого-нибудь есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...