asp实现数据库导出Excel、xls、dbf、VFP等文件的终极解决办法
[ 2010-04-15 15:40:29 | 作者: admin ]
完美地从数据导出数据到Excle文件 xls -标准的Excel格式,不是网上流传的那种空格符储存的文本模式 或者是网页代码保存的Excel文件。 同时这样做也解决了数据库导出到Excel文件时,如果有长数字数据会采用科学计数法的问题(如身份证,学号等数据)。 堪称完美的导出Excel xls文件的方法
引用
这是从数据库中导出 然后写入Excel文件 xls 的范例
[codes]
SELECT * INTO [Excel 8.0;DATABASE=C:\test\ecjtu.XLS].[ecjtu] FROM [tdd]
原理就是通过sql语句从数据库中读取数据 然后利用相应的引擎生成相应的Excel文件
注: 需要服务器支持相应的引擎 (简单的说就是服务器装了Excel,如果是要到处DBF,VFP的文件就最好装了VFP,那样相应的引擎就也安装了。)
引用
这是从数据库中导出 然后写入Excel文件 xls 一个实例。。。。
conn.execute("SELECT 是否交派遣费 , ksh as 考生号 , 是否交双选费 , 学号 , 学号 as 录取号 , 准考证号 , 姓名 , 性别代码 , 性别 , 民族代码 , 民族 , 政治面貌代码 , 政治面貌 , 学历代码 , 学历 , 专业代码 , 录取大专业 as 专业 , 培养方式代码 , 培养方式 , 生源所在地代码 , 生源所在地 , 学制 , 入学年份 , 毕业时间 , 毕业去向代码 , 毕业去向 , 委培定向单位 , 委培定向单位所在地代码 , 委培定向单位所在地 , 接收单位 , 接收单位隶属部门代码 , 单位隶 as 接收单位隶属部门 , 接收单位所在地代码 , 接收单位所在地 , 接收单位性质代码 , 接收单位性质 , 单位申报鉴证号 , xysh as 协议书编号 , 毕业证号 , 身份证号 , 是否一次就业 , 是否出省就业 , 是否师范类就业 , 扩展项一 , 扩展项二 , 自编学号 as 扩展项三 , 扩展项四 , 扩展项五 , 档案机要号 , 档案发往单位 , 收档单位邮编 , 收档单位地址 , 档案是否发出 , 介绍信办理时间 , 介绍信打印次数 , 联系电话 , 手机号码 , 电子邮箱 , 家庭地址 , 家庭电话 , 邮政编码 , 业余兴趣 , 特长 , 出生年月 , 综合测评代码 , 综合测评 , 奖惩类别代码 , 奖惩类别 , 成绩排名 , 婚姻状况代码 , 婚姻状况 , 备注 INTO [Excel 8.0;DATABASE="&path&"].[ecjtu] FROM [tdd]")
[/codes]
引用
[codes]
DIM conn,connstr,db
db="ZJBdata"
Set conn = Server.CreateObject("ADODB.Connection")
connstr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;"&_
"SourceDB=" & Server.MapPath(db) &";Exclusive=No"
conn.Open connstr
[/codes]
引用
SELECT * INTO [dBase III;DATABASE=C:\new].[test.DBF] FROM [tdd]
引用
实战数据导出dbf文件时存在的问题
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e57'
字段将不能置于记录中
引用
分析以及解决导出DBF时“字段将不能置于记录中”错误
access表的文字字段总长度应小于3900(2007中估算)个字节。
以前有人提问在设计表或者更改表的时候提示“记录过大”,原因:access 2003 及以前对文字字段总长度有2000个字符数的限制,所以不要在一个表中创建太多文字字段。
access 2007 当字段的 UnicodeCompression 属性设置为“是”时记录中的字符个数(除“备注”和“OLE 对象”字段外)为4000以下。
参考文章
一、DBase文件
SQL 命令:SELECT * INTO [dBase III;DATABASE=MDB文件路径].[dbase文件名称] FROM [authors]
db.Execute "SELECT * INTO [dBase III;DATABASE=C:\test].[authors.DBF] FROM [authors]"
注意事項:
1、authors.DBF 事先不可存在,否则会产生错误!
2、若您沒有 Dbase,您可以使用 Access 来连結这个 Table,以便观察結果!
二、文本文件 (.Txt)
SQL 命令:SELECT * INTO [Text;DATABASE=文本文件路径].[文本文件名称] FROM [authors]
db.Execute "SELECT * INTO [Text;DATABASE=C:\test].[authors.TXT] FROM [authors]"
注意事項:
1、authors.TXT 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.TXT,第二个是 Schema.ini。
3、文本文件之格式为 CSV 之文件格式,以逗点分开,实际呈现方式如下:
"Au_ID","Author","Year Born"
1,"Jacobs, Russell",1950
2,"Metzger, Philip W.",1942
4、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
5、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下:
[authors.TXT]
ColNameHeader=True
CharacterSet=OEM
Format=CSVDelimited
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short
三、Html 文件
SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=Html文件路径].[Html文件名称] FROM [authors]
db.Execute "SELECT * INTO [HTML Export;DATABASE=C:\test].[authors.HTM] FROM [authors]"
注意事項:
1、authors.HTM 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.HTM,第二个是 Schema.ini。
3、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
4、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下:
[authors.HTM]
ColNameHeader=True
CharacterSet=ANSI
Format=HTML
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short
四、Excel 文件
SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=文件路径 档名].[工作表名称] FROM [authors]
db.Execute "SELECT * INTO [Excel 8.0;DATABASE=C:\test\authors.XLS].[authors] FROM [authors]"
注意事項:
1、authors.XLS 可事先存在,也可以不存在,会自动产生一个。
2、工作表 authors 事先不可存在,否则会产生错误!
五、Access 文件
SQL 命令:SELECT * INTO [新MDB文件路径 档名][新表名称] FROM [authors]
'导出到同一MDB文件 ( 新 Table 为 authors1 )
'新 Table authors1 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [authors1] FROM [authors]"
'导出到不同的MDB文件 ( 新MDB文件为 db1,新 Table 为 authors )
'新MDB文件 db1事先必須存在,否则会产生错误!
'但是其中新 Table authors 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [C:\test\db1.mdb].[authors] FROM [authors]"
注一:各种可能的MDB文件种类 Connect 属性設定方式:
MDB文件种类 MDB文件宣告方式 MDB文件路径 (或加上档名)
Microsoft Jet Database [database]; drive:\path\filename.mdb
dBASE III dBASE III; drive:\path
dBASE IV dBASE IV; drive:\path
dBASE 5 dBASE 5.0; drive:\path
Paradox 3.x Paradox 3.x; drive:\path
Paradox 4.x Paradox 4.x; drive:\path
Paradox 5.x Paradox 5.x; drive:\path
Microsoft FoxPro 2.0 FoxPro 2.0; drive:\path
Microsoft FoxPro 2.5 FoxPro 2.5; drive:\path
Microsoft FoxPro 2.6
引用
这是从数据库中导出 然后写入Excel文件 xls 的范例
[codes]
SELECT * INTO [Excel 8.0;DATABASE=C:\test\ecjtu.XLS].[ecjtu] FROM [tdd]
原理就是通过sql语句从数据库中读取数据 然后利用相应的引擎生成相应的Excel文件
注: 需要服务器支持相应的引擎 (简单的说就是服务器装了Excel,如果是要到处DBF,VFP的文件就最好装了VFP,那样相应的引擎就也安装了。)
引用
这是从数据库中导出 然后写入Excel文件 xls 一个实例。。。。
conn.execute("SELECT 是否交派遣费 , ksh as 考生号 , 是否交双选费 , 学号 , 学号 as 录取号 , 准考证号 , 姓名 , 性别代码 , 性别 , 民族代码 , 民族 , 政治面貌代码 , 政治面貌 , 学历代码 , 学历 , 专业代码 , 录取大专业 as 专业 , 培养方式代码 , 培养方式 , 生源所在地代码 , 生源所在地 , 学制 , 入学年份 , 毕业时间 , 毕业去向代码 , 毕业去向 , 委培定向单位 , 委培定向单位所在地代码 , 委培定向单位所在地 , 接收单位 , 接收单位隶属部门代码 , 单位隶 as 接收单位隶属部门 , 接收单位所在地代码 , 接收单位所在地 , 接收单位性质代码 , 接收单位性质 , 单位申报鉴证号 , xysh as 协议书编号 , 毕业证号 , 身份证号 , 是否一次就业 , 是否出省就业 , 是否师范类就业 , 扩展项一 , 扩展项二 , 自编学号 as 扩展项三 , 扩展项四 , 扩展项五 , 档案机要号 , 档案发往单位 , 收档单位邮编 , 收档单位地址 , 档案是否发出 , 介绍信办理时间 , 介绍信打印次数 , 联系电话 , 手机号码 , 电子邮箱 , 家庭地址 , 家庭电话 , 邮政编码 , 业余兴趣 , 特长 , 出生年月 , 综合测评代码 , 综合测评 , 奖惩类别代码 , 奖惩类别 , 成绩排名 , 婚姻状况代码 , 婚姻状况 , 备注 INTO [Excel 8.0;DATABASE="&path&"].[ecjtu] FROM [tdd]")
[/codes]
引用
[codes]
DIM conn,connstr,db
db="ZJBdata"
Set conn = Server.CreateObject("ADODB.Connection")
connstr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;"&_
"SourceDB=" & Server.MapPath(db) &";Exclusive=No"
conn.Open connstr
[/codes]
引用
SELECT * INTO [dBase III;DATABASE=C:\new].[test.DBF] FROM [tdd]
引用
实战数据导出dbf文件时存在的问题
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e57'
字段将不能置于记录中
引用
分析以及解决导出DBF时“字段将不能置于记录中”错误
access表的文字字段总长度应小于3900(2007中估算)个字节。
以前有人提问在设计表或者更改表的时候提示“记录过大”,原因:access 2003 及以前对文字字段总长度有2000个字符数的限制,所以不要在一个表中创建太多文字字段。
access 2007 当字段的 UnicodeCompression 属性设置为“是”时记录中的字符个数(除“备注”和“OLE 对象”字段外)为4000以下。
参考文章
一、DBase文件
SQL 命令:SELECT * INTO [dBase III;DATABASE=MDB文件路径].[dbase文件名称] FROM [authors]
db.Execute "SELECT * INTO [dBase III;DATABASE=C:\test].[authors.DBF] FROM [authors]"
注意事項:
1、authors.DBF 事先不可存在,否则会产生错误!
2、若您沒有 Dbase,您可以使用 Access 来连結这个 Table,以便观察結果!
二、文本文件 (.Txt)
SQL 命令:SELECT * INTO [Text;DATABASE=文本文件路径].[文本文件名称] FROM [authors]
db.Execute "SELECT * INTO [Text;DATABASE=C:\test].[authors.TXT] FROM [authors]"
注意事項:
1、authors.TXT 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.TXT,第二个是 Schema.ini。
3、文本文件之格式为 CSV 之文件格式,以逗点分开,实际呈现方式如下:
"Au_ID","Author","Year Born"
1,"Jacobs, Russell",1950
2,"Metzger, Philip W.",1942
4、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
5、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下:
[authors.TXT]
ColNameHeader=True
CharacterSet=OEM
Format=CSVDelimited
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short
三、Html 文件
SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=Html文件路径].[Html文件名称] FROM [authors]
db.Execute "SELECT * INTO [HTML Export;DATABASE=C:\test].[authors.HTM] FROM [authors]"
注意事項:
1、authors.HTM 事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件 authors.HTM,第二个是 Schema.ini。
3、Schema.ini 若事先不存在会新产生一个,若已存在,则会在原文件后面直接 Append。
4、至于 Schema.ini 的內容为此次导出的相关资讯,格式同一般的 Ini 档,详細內容如下:
[authors.HTM]
ColNameHeader=True
CharacterSet=ANSI
Format=HTML
Col1=Au_ID Integer
Col2=Author Char Width 50
Col3="Year Born" Short
四、Excel 文件
SQL 命令:SELECT * INTO [Excel 8.0;DATABASE=文件路径 档名].[工作表名称] FROM [authors]
db.Execute "SELECT * INTO [Excel 8.0;DATABASE=C:\test\authors.XLS].[authors] FROM [authors]"
注意事項:
1、authors.XLS 可事先存在,也可以不存在,会自动产生一个。
2、工作表 authors 事先不可存在,否则会产生错误!
五、Access 文件
SQL 命令:SELECT * INTO [新MDB文件路径 档名][新表名称] FROM [authors]
'导出到同一MDB文件 ( 新 Table 为 authors1 )
'新 Table authors1 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [authors1] FROM [authors]"
'导出到不同的MDB文件 ( 新MDB文件为 db1,新 Table 为 authors )
'新MDB文件 db1事先必須存在,否则会产生错误!
'但是其中新 Table authors 事先不可存在,否则会产生错误!
db.Execute "SELECT * INTO [C:\test\db1.mdb].[authors] FROM [authors]"
注一:各种可能的MDB文件种类 Connect 属性設定方式:
MDB文件种类 MDB文件宣告方式 MDB文件路径 (或加上档名)
Microsoft Jet Database [database]; drive:\path\filename.mdb
dBASE III dBASE III; drive:\path
dBASE IV dBASE IV; drive:\path
dBASE 5 dBASE 5.0; drive:\path
Paradox 3.x Paradox 3.x; drive:\path
Paradox 4.x Paradox 4.x; drive:\path
Paradox 5.x Paradox 5.x; drive:\path
Microsoft FoxPro 2.0 FoxPro 2.0; drive:\path
Microsoft FoxPro 2.5 FoxPro 2.5; drive:\path
Microsoft FoxPro 2.6
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1382
这篇日志没有评论。
此日志不可发表评论。