C# 通过web浏览器打开.xls/.xlsx文件,并使其可供用户编辑
规范C# 通过web浏览器打开.xls/.xlsx文件,并使其可供用户编辑,c#,asp.net,excel,web,oledb,C#,Asp.net,Excel,Web,Oledb,规范 使用.NET3.5/4.0框架 Web应用程序C# 计算机没有安装MS Office 问题: 需要从web浏览器打开excel文件报表,以便用户编辑报表并将更新保存到excel文件中。(可能吗?因为机器没有安装MS office) 按代码:我只能读取文件并通过网格显示,但无法编辑 public void LoadExceltotheGrid() { string connectionString = ""; string fileLocation = MapPath("
- 使用.NET3.5/4.0框架
- Web应用程序C#
- 计算机没有安装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”,微软为其提供了sdk。这个SDK对用户不是很友好,而且非常简单,因此我建议使用像EPPLUS这样的库来读/写文件。这是非常容易,快速和无成本。它甚至有从数据表转换到数据表的方法。我能够使用SkyDrive完成我的任务
- 首先上传SkyDrive中的文件(假设我已经有一个帐户)
- 获取文件的链接并将其嵌入页面李>