[英]Open .xls/.xlsx file through web browser and make it editable for the user
規格
問題:需要從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文件夾和文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.