簡體   English   中英

在服務器上讀取 Excel 文件

[英]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。

  1. 如果應用程序是WEB應用程序,其中應用程序通過Web瀏覽器在客戶端本地顯示數據:請參閱此MS鏈接: http//support.microsoft.com/kb/162059 在這里,您實際上是將xls文件/流發送到客戶端。

  2. 如果您將其顯示為WEB應用程序,並在網頁上顯示已呈現內容發送到客戶端的數據,那么您需要在服務器上使用Excel Services (我認為這是SharePoint系列的一部分),或者是第三方AS .NET控件准備好.XLS信息並將其呈現到頁面中。

  3. 如果應用程序是在獨立應用程序中顯示excel數據的桌面應用程序,其中用戶以桌面用戶身份登錄到服務器,則需要在服務器上安裝Excel。 或者您需要第三方.net控件(取決於應用程序技術WinForms,WFP / Silverlight等),它們可以讀取.XLS信息並顯示它。

  4. 如果應用程序在虛擬桌面上運行,例如Citrix,則它與3相同。

  5. 如果您所做的只是通過OLEDB讀取文件,然后使用excel外部的數據,那么您可以免費安裝Access連接引擎 這基本上是在需要“僅服務”包(或者您喜歡的驅動程序)中讀取各種Office數據所需的組件。 我不允許在單元級別進行隨機訪問,但我知道它確實允許您通過.XLS文件運行OLEDB查詢。 我們用於將.XLS文件加載到數據庫中。

所有這些都有不同的許可限制和成本。 在沒有任何用例的情況下,我可以建議的是,您認為Excel是一組龐大的應用程序組件並使用它們,您需要准確了解您的應用程序和它們的功能/交互方式以及它們在任何特定方面的局限性您設想的部署方案。

編輯:更多信息:如果您在64服務器上運行並使用32位應用程序,那么ACE能夠工作的唯一方法是安裝ACE 2007而不是2010版本

如果您只需要閱讀文件內容,可以使用Csv格式,我認為這是您在服務器中讀取Excel文件的最簡單方法。 你可以'保存為'excel文件到* .csv。 一個csv文件只不過是一個以這種方式編寫的文本文件(以逗號分隔):

“列1”,“列2”,“欄3”

所以現在你要做的只是閱讀一個文本文件。

CVS文件

希望能幫助到你

您可以使用 OpenXml 或 ClosedXml - 它們在服務器上工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM