Excel文件的创建很容易,关键的一步是选择你要在页面中显示的内容,选择菜单“插入”-》“名称”-》“定义”,输入你对当前选择区域的命名。在这里,我命名为myRange1,这在后面将要用到。Excel文件编辑好之后,将它保存到硬盘上。我这里保存到了Web服务器的根目录中,当然你也可以保存任意位置,但你要注意在代码中做一定的修改。
第二步,编码。
新建一个ASP.NET应用程序,在默认的WebForm1.aspx中,拖放一个DataGrid控件,它将用来显示Excel中的内容。打开后台编码文件,引用名称空间System.Data.OleDb,因为后面的代码中将用到此名称空间。在Page_Load()事件中插入以下代码:
// 创建字符串变量。"Data Source"为.xls文件所在的位置
string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+Server.MapPath("../ExcelData.xls")+";"+
"Extended Properties=Excel 8.0;";
// 创建连接对象
OleDbConnection objConnection = new OleDbConnection(strConnection);
// 创建OleDbCommand对象。myRange1是Excel文件中定义的区域名
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM myRange1",objConnection);
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
DataSet dsExcel = new DataSet();
// 打开数据库连接
objConnection.Open();
objAdapter.SelectCommand = objCmdSelect;
objAdapter.Fill(dsExcel);
// 把数据绑定到DataGrid控件上
DataGrid1.DataSource = dsExcel.Tables[0].DefaultView;
DataGrid1.DataBind();
// 关闭数据库连接
objConnection.Close();这种方法存在的问题:
1、一定要对显示的区域先进行选取,命名,这比较麻烦;
2、用页面显示Excel中的内容,一定要先关闭.xls文件;
3、只能打开特定的.xls文件中的特定区域,具有很大的局限性。
对于第二点:
如果.xls文件在Excel中打开着,则会出现如下错误:
Microsoft Jet 数据库引擎打不开文件''。 它已经被别的用户以独占方式打开,或没有查看数据的权限。
参考:
http://support.microsoft.com/kb/306572/zh-cn
浙公网安备 33010602011771号