是否可以在Web浏览器上打开和编辑Excel文件?
我正在使用MVC4的Web应用程序,并希望打开具有可编辑功能的Web浏览器上的Excel文件。要求是最终用户的Excel格式不固定,但我们的数据库列是固定的,我想将Excel参数保存在我们的数据库中。是否可以在Web浏览器上打开和编辑Excel文件?
这可能吗?
使用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.
}
}
}
谢谢@Shaminder分享代码。这真的很有帮助.. –
那是什么'catch'块?在那里返回'null'真的只有*替代吗?你不想甚至*看*或* log *例外?而且这条评论线是错误的,千万不要这样做。 – David
@PrashantMehta,试试这个代码,让我知道是否需要任何帮助 –
由于瓦莱里奥卡萨诺建议你也许能够得到自己的工作。但这取决于您需要多少编辑以及您的电子表格有多复杂。
要从Excel文件读取数据,您可以使用EPPlus等.Net组件。它非常快速且易于使用,并且可以让您轻松提取大部分需要的数据。
但是为了使数据在网页中可见和可编辑,您需要更多东西。有一些网页(基于HTML/JS的)组件,可以让你以Excel格式显示表格数据。例如,请查看Handsontable。与EPPlus一起使用时,您应该能够从Excel文件中读取数据,并在网页中显示一些可能的编辑内容,最后您可以将这些数据提交回服务器并生成一个新的Excel文件再次使用EPPlus。
这将需要一些编码,但它是绝对可行的。
现在,这可能不会支持公式而不是数字/图表,但只要您的文件只包含数据和简单的格式,您应该没问题。
感谢符文快速回复。 EPPlus是很好的组件。我试图在web浏览器上显示html格式的excel。 –
直接在浏览器中编辑Excel文档听起来像是在SharePoint中开发的,而不是在ASP.NET中开发的。 – David
是否可以只在asp.net中查看? –
我不认为视图也是可能的,IE可能支持,但其他浏览器不支持视图。在JavaScript中有几个插件(网格),你可以用它来获得类似的感觉。检查了这个http://handsontable.com/ – PSK