[英]Reading Excel file on the server
我有 asp.net 應用程序加載 excel 文件讀取。 它在我的本地開發服務器上運行良好。 但是,當我將其上傳到服務器時,它不會顯示上傳的 excel 文件。 我在本地計算機上安裝了 MS Office,但沒有在服務器上安裝。 感謝您的指導
我使用的代碼是...
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.14.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 14.0;HDR=Yes;IMEX=2\"";
}
//Create OleDB Connection and OleDb Command
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);
con.Close();
GridView1.DataSource = dtExcelRecords;
GridView1.DataBind();
我不斷收到錯誤
" The 'Microsoft.ACE.OLEDB.14.0' provider is not registered on the local machine."
即使我安裝了 Access db 並且可以看到 ACE 14.0,我仍然不斷收到此錯誤
根據Excel的功能,您需要在服務器或客戶端或者了解格式的第三方控件上安裝Excel。
如果應用程序是WEB應用程序,其中應用程序通過Web瀏覽器在客戶端本地顯示數據:請參閱此MS鏈接: http : //support.microsoft.com/kb/162059 。 在這里,您實際上是將xls文件/流發送到客戶端。
如果您將其顯示為WEB應用程序,並在網頁上顯示已呈現內容發送到客戶端的數據,那么您需要在服務器上使用Excel Services (我認為這是SharePoint系列的一部分),或者是第三方AS .NET控件准備好.XLS信息並將其呈現到頁面中。
如果應用程序是在獨立應用程序中顯示excel數據的桌面應用程序,其中用戶以桌面用戶身份登錄到服務器,則需要在服務器上安裝Excel。 或者您需要第三方.net控件(取決於應用程序技術WinForms,WFP / Silverlight等),它們可以讀取.XLS信息並顯示它。
如果應用程序在虛擬桌面上運行,例如Citrix,則它與3相同。
如果您所做的只是通過OLEDB讀取文件,然后使用excel外部的數據,那么您可以免費安裝Access連接引擎 。 這基本上是在需要“僅服務”包(或者您喜歡的驅動程序)中讀取各種Office數據所需的組件。 我不允許在單元級別進行隨機訪問,但我知道它確實允許您通過.XLS文件運行OLEDB查詢。 我們用於將.XLS文件加載到數據庫中。
所有這些都有不同的許可限制和成本。 在沒有任何用例的情況下,我可以建議的是,您認為Excel是一組龐大的應用程序組件並使用它們,您需要准確了解您的應用程序和它們的功能/交互方式以及它們在任何特定方面的局限性您設想的部署方案。
編輯:更多信息:如果您在64服務器上運行並使用32位應用程序,那么ACE能夠工作的唯一方法是安裝ACE 2007而不是2010版本
如果您只需要閱讀文件內容,可以使用Csv格式,我認為這是您在服務器中讀取Excel文件的最簡單方法。 你可以'保存為'excel文件到* .csv。 一個csv文件只不過是一個以這種方式編寫的文本文件(以逗號分隔):
“列1”,“列2”,“欄3”
所以現在你要做的只是閱讀一個文本文件。
希望能幫助到你
您可以使用 OpenXml 或 ClosedXml - 它們在服務器上工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.