Я создаю веб-сайт (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 и на любом другом веб-ресурсе, чтобы это работало.У кого-нибудь есть предложения?