http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/28/5231.aspx
我的新书里面,介绍了三个范例,跟Excel有关。
分别是 GridView转成Excel、XML转成Excel等等。
这次找到相关的数据给大家参考。
- Generating Excel Report in ASP.NET 2.0 http://www.beansoftware.com/ASP.NET-Tutorials/Generating-Excel-Reports.aspx
- HOW TO:使用 ASP.NET、ADO.NET 及 Visual C# .NET 查询及显示 Excel 数据 http://support.microsoft.com/kb/306572/zh-tw
第二篇文章,是C#的范例,是旧的ASP.NET1.1版。本文以此为例,需稍作修改。
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
首先,参考第一篇文章的作法。
图片 四 (Fig 4. Adding MicrosoftExcel 11.0 Object Library as Reference)
先在VS 2005/200/2010中,加入参考 ==> COM >>选择「Microsoft Excel 11.0 ObjectLibrary 」
然后就简单了。
把第二篇文章的 C#改成VB语法就行了。 写 .NET程序的人,如果无法自己转换 VB与 C#语法,那真的很糟糕了。
请看---- .NET的世界里,入门的VB / C#语法转换不该是一个问题。
后置程序代码的最上方,别忘了加上这两个 NameSpace(命名空间)
Imports System.Data
Imports System.Data.OleDb
然后...............下面的 Excel档名,请自己修改一下
最讨厌的是,T-SQL指令里面,要抓取 Excel的工作表,务必要写成这个样子。后面要加上 $符号!!
照着原文(上面第二篇文章)来作,一定会错!
01 Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
02 Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("GridView_Excel_DataSource.xls") + ";Extended Properties=Excel8.0;"
03
04 Dim objConn As OleDbConnection = New OleDbConnection(sConnectionString)
05
06 ' Create new OleDbCommand to return data from worksheet.
07 '重点在于 Sheet1 的写法!!
08 Dim objCmdSelect As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", objConn)
09
10 ' Create new OleDbDataAdapter that is used to build a DataSet
11 ' based on the preceding SQL SELECT statement.
12 Dim objAdapter1 As OleDbDataAdapter = New OleDbDataAdapter()
13
14 'Pass the Select command to the adapter.
15 objAdapter1.SelectCommand= objCmdSelect
16
17 ' Create new DataSet to hold information from the worksheet.
18 Dim objDataset1 As DataSet = New DataSet()
19
20 ' Fill the DataSet with the information from the worksheet.
21 objAdapter1.Fill(objDataset1,"XLData")
22
23 ' Bind data to DataGrid control.
24 GridView1.DataSource = objDataset1.Tables(0).DefaultView
25 GridView1.DataBind()
26 End Sub
完成了,最后补充一下:
1 . 因为DataAdapter与DataSet,会自动开启、关闭「数据库的联机」,所以我删去这部份程序代码。跟微软的原文不太一样。
2. 上面的「连结 Excel档案」的字符串,这篇文章讲的很仔细,请务必看过一次-- http://blog.miniasp.com/post/2008/08/How-to-read-Excel-file-using-OleDb-correctly.aspx
3. 本范例,如果要看 C#语法,上述的第二篇(http://support.microsoft.com/kb/306572/zh-tw)就是 C#语法,请自行参考!
4. 比较头大的问题,是在 x64(64位)的Windows操作系统上,上述的写法(Jet.OLEDB)问题不少。微软已经推出 Win2003(x64)的MDAC,但Win2008呢.....还有些问题有待时间解决啦~
真正的好东西来了~~
[转贴]在 Server端存取 Excel 档案的利器:NPOI Library (2010/1/13补充)
==================================================================================
如果你对于 VB与C#语法之间的转换很害怕的话(或是吓到不敢尝试),请您一定要看看这篇文章--.NET的世界里,入门的VB / C#语法转换不该是一个问题。
如果您看不懂、或是不会自己手写 ADO.NET的程序,可以参考我另一篇文章--[ADO.NET] DataReader的标准范例 for ASP.NET (Code Behind版)
我的新书里面,对ADO.NET这部份有不少补充,是市面上其它书比较少见的。
最后,广告一下我的新书----
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)