簡體   English   中英

通過網絡瀏覽器打開.xls / .xlsx文件,並使其對用戶可編輯

[英]Open .xls/.xlsx file through web browser and make it editable for the user

規格

  • 使用.Net 3.5 / 4.0框架
  • Web應用程序C#
  • 機器沒有安裝MS Office

問題:需要從Web瀏覽器打開excel文件報告,以便用戶編輯報告並將更新保存在excel文件中。 (可能嗎?因為該計算機沒有安裝MS Office)。

通過代碼:我只能讀取文件並通過網格顯示它,但不能編輯。

public void LoadExceltotheGrid()
{
    string connectionString = "";
    string fileLocation = MapPath("FileMe20140107.xlsx");
    string fileExtension = Path.GetExtension(fileLocation);
    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.12.0;Data Source=" +
        fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
    }
    System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.Connection = con;
    System.Data.OleDb.OleDbDataAdapter dAdapter = new System.Data.OleDb.OleDbDataAdapter(cmd);
    DataTable dtExcelRecords = new DataTable();
    con.Open();
    DataTable dtExcelSheetName = con.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
    string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
    cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
    dAdapter.SelectCommand = cmd;
    dAdapter.Fill(dtExcelRecords);
    GridView1.DataSource = dtExcelRecords;
    GridView1.DataBind();
}

老實說,這是一項非常復雜的任務-Office格式非常復雜,以至於不容易編寫。 對於xls格式尤其如此-幾乎不可能原生讀取/寫入。 有諸如Aspose.Cells之類的第三方工具可以執行此操作,但是您必須支付許可費。

通過OLedb使用的方法適用於簡單的用例,但是即使對格式結構進行簡單的更改也會將其拋出,這也很慢。 因此,這似乎是一個解決方案,但充其量只是半成品,將導致維護網格無休止。

xlsx格式更易於讀取/寫入,因此,如果您可以放棄對xls文件的支持,則可以使用該格式的機會更大。 該格式稱為“ Office open xml”,Microsoft提供了一個SDK。 該SDK並不是非常用戶友好且非常簡單,因此我建議使用EPPLUS之類的庫來讀取/寫入文件。 這是非常容易,快速且不花錢的。 它甚至具有從/轉換為數據表的方法。

我可以使用SkyDrive完成任務。 使用Microsoft OneDrive文件夾和文件

  • 首先將文件上傳到SkyDrive中(如果我已經有一個帳戶)。
  • 獲取文件的鏈接並將其嵌入到頁面中。

暫無
暫無

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

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