是否可以在Web浏览器上打开和编辑Excel文件?

问题描述:

我正在使用MVC4的Web应用程序,并希望打开具有可编辑功能的Web浏览器上的Excel文件。要求是最终用户的Excel格式不固定,但我们的数据库列是固定的,我想将Excel参数保存在我们的数据库中。是否可以在Web浏览器上打开和编辑Excel文件?

这可能吗?

+2

直接在浏览器中编辑Excel文档听起来像是在SharePoint中开发的,而不是在ASP.NET中开发的。 – David

+0

是否可以只在asp.net中查看? –

+0

我不认为视图也是可能的,IE可能支持,但其他浏览器不支持视图。在JavaScript中有几个插件(网格),你可以用它来获得类似的感觉。检查了这个http://handsontable.com/ – PSK

使用EPPlus library你可以尝试下面的代码。 path是你的excel文件在服务器上的相对路径。第一个foreach循环用于标题部分,第二个for循环用于表格的其余部分。大部分代码都是自我解释的。

private DataTable getDataTableFromExcel(string path) 
    { 
     using (var pck = new OfficeOpenXml.ExcelPackage()) 
     { 
      using (var stream = File.OpenRead(path)) 
      { 
       pck.Load(stream); 
      } 
      var ws = pck.Workbook.Worksheets.First(); 
      DataTable dt = new DataTable(); 
      bool hasHeader = true; 
      int headercol = 1; 
      int rownumber = 1; 
      try 
      { 
       foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) 
       { 
        dt.Columns.Add(headercol.ToString()); 
        headercol++; 
       } 
       var startRow = hasHeader ? 2 : 1; 

       for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) 
       { 
        var wsRow = ws.Cells[rowNum, 1, rowNum, 38]; //last parameter is colums count, here i fixed it to 38 
        var row = dt.NewRow(); 
        foreach (var cell in wsRow) 
        { 
         row[cell.Start.Column - 1] = cell.Text; 
        } 
        dt.Rows.Add(row); 
        rownumber++; 
       } 
       return dt; 
      } 
      catch (Exception x) 
      { 
       // throw new Exception(x + " on row " + rownumber); 
       return null;//Dont use null, But Log your exception here. 
      } 

     } 
    } 
+0

谢谢@Shaminder分享代码。这真的很有帮助.. –

+0

那是什么'catch'块?在那里返回'null'真的只有*替代吗?你不想甚至*看*或* log *例外?而且这条评论线是错误的,千万不要这样做。 – David

+0

@PrashantMehta,试试这个代码,让我知道是否需要任何帮助 –

由于瓦莱里奥卡萨诺建议你也许能够得到自己的工作。但这取决于您需要多少编辑以及您的电子表格有多复杂。

要从Excel文件读取数据,您可以使用EPPlus等.Net组件。它非常快速且易于使用,并且可以让您轻松提取大部分需要的数据。

但是为了使数据在网页中可见和可编辑,您需要更多东西。有一些网页(基于HTML/JS的)组件,可以让你以Excel格式显示表格数据。例如,请查看Handsontable。与EPPlus一起使用时,您应该能够从Excel文件中读取数据,并在网页中显示一些可能的编辑内容,最后您可以将这些数据提交回服务器并生成一个新的Excel文件再次使用EPPlus。

这将需要一些编码,但它是绝对可行的。

现在,这可能不会支持公式而不是数字/图表,但只要您的文件只包含数据和简单的格式,您应该没问题。

+0

感谢符文快速回复。 EPPlus是很好的组件。我试图在web浏览器上显示html格式的excel。 –