【问题标题】:Open .xls/.xlsx file through web browser and make it editable for the user通过网络浏览器打开 .xls/.xlsx 文件并使其对用户可编辑
【发布时间】:2014-02-12 07:32:49
【问题描述】:

规格

  • 使用 .Net 3.5/4.0 框架
  • Web 应用程序 C#
  • 机器未安装 MS Office

问题: 需要从网络浏览器打开 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 365 的 Excel Web App 嵌入到您自己的网站中,但我认为 xlsx 必须存储在云中(SkyDrive/Office365/Sharepoint Online)。至少可以说,重塑 Excel 将非常困难
  • 该应用程序已经存在并被广泛使用。我无能为力,我的任务仅限于创建一个函数,该函数将调用 excel 文件并通过网络查看它,并使其可编辑。
  • 你的任务是完成一项不可能完成的任务。

标签: c# asp.net excel web oledb


【解决方案1】:

我能够使用 SkyDrive 完成我的任务。 Working with Microsoft OneDrive folders and files

  • 先上传网盘里的文件(因为我已经有账号了)。
  • 获取文件的链接并将其嵌入到页面中。

【讨论】:

    【解决方案2】:

    说实话,这是一项非常复杂的任务——Office 格式非常复杂,不容易编写。对于 xls 格式尤其如此 - 这几乎是不可能在本机上读/写的。有像 Aspose.Cells 这样的第三方工具可以做到这一点,但您必须支付许可费。

    您通过 OLedb 的方法适用于简单的用例,但即使是对格式结构的简单更改也会将其抛出,而且速度很慢。所以这似乎是一个解决方案,但它充其量只是一个半途而废的解决方案,这将导致维护网格无休止。

    xlsx 格式更容易读/写,因此如果您可以放弃对 xls 文件的支持,您就有更好的机会使用该格式。该格式称为“Office open xml”,Microsoft 提供了一个 sdk。这个 SDK 对用户不是很友好,也不是很简单,所以我会推荐一个像 EPPLUS 这样的库来读取/写入文件。它非常简单、快速且不花钱。它甚至具有从 / 转换为数据表的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      相关资源
      最近更新 更多