将Excel导入数据表
求一段将excel数据导入VFP表里面的代码,谢谢!
这是帮助文件中的内容:
从一个文件中读入记录,追加到当前表的尾部。APPEND FROM FileName | ?[FIELDS FieldList] [FOR lExpression]
[[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB
| WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD |
SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5
[SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage]
参数
FileName
指定从中读入记录的文件名。如果给出的文件名中不包含扩展名,则默认为 Visual FoxPro 表,扩展名为 .dbf 。如果是从 Visual FoxPro 表中读入记录, 即使当前 SET DELETED 设置为 OFF ,表中标记为删除的记录也将添加到当前表中。
显示打开对话框,从中可以选择从哪个表中读入记录。
FIELDS FieldList
指定为哪些字段添加数据。 注意:
不能从文本文件( 例如 CSV 和 SDF 文件) 向备注字段中添加。
FOR lExpression
为当前选定表中每一条 lExpression 为真(.T.) 的记录追加新记录。直至达到当前选定表的末尾。如果省略 FOR ,则整个源文件记录都追加到当前表中。
TYPE
指定源文件类型。如果指定的源文件类型不是 Visual FoxPro 表,则必须指定文件类型,但不必包括 TYPE 关键字。您可以从各种类型文件中读入信息添加到表中,包括 ASCII 文本文件,在这些文件中可以指定字段分隔符。如果要追加的源文件扩展名不是默认的扩展名,源文件名必须包括文件扩展名。例如,Microsoft Excel 工作表通常具有 .xls 扩展名。如果要追加的Microsoft Excel 工作表扩展名不是 .xls ,一定要指定扩展名。 注意:
When 如果要追加的记录来自工作表,工作表中的数据必须以主行序( row-major order) 而非主列序(column-major order) 存储。这样才能使追加的工作表数据符合表结构。
DELIMITED
指定源文件为分隔数据文件。 分割文件是 ASCII 文本文件,文件中每条记录以回车和换行符结尾。字段内容默认地由逗号分开( 不能在逗号之前或之后包含多余的空格) ,字符字段值还需要用引号括上。例如: 复制代码
"Smith",9999999,"TELEPHONE"
所有分隔数据文件的扩展名默认为 .txt 数据的格式。如果日期格式正确,可以从分隔文件中导入日期数据。日期的默认格式为 mm/dd/yy 。您还可以选择加入世纪信息。Visual FoxPro 导入的数据,如 12/25/95 ,不包含世纪信息,世纪信息的默认值为20世纪。日期分隔符可以为任意非数值字符,但不能使用分隔文件中字段的分隔符。如果其他一些日期格式与 SET DATE 中可以使用的格式相匹配,应在使用 APPEND FROM 前发出 SET DATE 修改数据格式设置。要想检查日期格式是否能成功地导入,可使用 CTOD( ) 函数。如果 CTOD( ) 函数接收此日期值,则日期数据就能正确地导入。
DELIMITED WITH Delimiter
指定字符型字段由此字符标识,而不是引号。
DELIMITED WITH BLANK
指定由空格符(spaces) 分隔字段,而不是逗号。
DELIMITED WITH TAB
指定由制表符(TAB) 分隔字段,而不是逗号。
DELIMITED WITH CHARACTER Delimiter
指定字段之间由给定的 Delimiter 分隔。如果 Delimiter 是分号 ( 分号 Visual FoxPro 用于命令行的延续), 应用引号括起来。您也可以指定 BLANK 和 TAB 作为 Delimiter 关键字。WITH Delimiter 子句可与 WITH CHARACTER 子句结合使用。例如,下面的命令从文本文件中添加记录,字符字段用下划线( _ ) 标识,而字段之间用星号(*) 分隔: 复制代码
APPEND FROM mytxt.txt DELIMITED WITH _ WITH CHARACTER *
DIF
选用 DIF 可从 VisiCalc .dif ( 数据交换格式) 文件中导入数据。矢量 ( 列) 对应当前选定表的字段,元组( 行) 对应表的记录。DIF 文件的默认扩展名为 .dif 。
FW2
选用 FW2 可从由 Framework II 创建的文件中导入数据。FW2 文件的默认扩展名为 .fw2 。
MOD
选用 MOD 可从 Microsoft Multiplan 4.01 版本的文件中导入数据。MOD 文件由 Microsoft Multiplan 4.01 版本创建,默认扩展名为 .mod 。
PDOX
选用 PDOX 可从 Paradox 3.5 或 4.0 版本的数据库文件中导入数据。Paradox 文件名的默认扩展名为 .db 。
RPD
选用 RPD 可从 RapidFile 1.2 版本创建的文件中导入数据。RapidFile 文件名的默认扩展名为 .rpd 。
SDF
选用 SDF 可从系统数据格式(System Data Format) 文件中导入数据。SDF 文件是一种 ASCII 文本文件,记录有固定长度,并且以回车和换行符结尾。字段之间不分隔开。SDF文件的默认扩展名为 .txt 。从 SDF 文件到 Visual FoxPro 表时,有效的日期转换要求数据保存为 YYYYMMDD 格式。如果日期保存为不明确的格式,您应该映射日期列到一个适当宽度的字符列,这样您可以检查转换后的值来改正转换程序,以创建正确格式的日期数据。
SYLK
选用 SYLK 可从 SYLK (Symbolic Link) 交换格式文件中导入数据。SYLK 文件用于 Microsoft MultiPlan 中。SYLK 文件中的列对应 Visual FoxPro 表的字段,行对应表的记录。SYLK 文件没有扩展名。
WK1
选用 WK1 可从 Lotus 1-2-3 2.x 版本的电子表格中导入数据。电子表格的每列对应表的一个字段;每行对应表的一条记录。Lotus 1-2-3 2.x 版本创建的电子表格扩展名为 .WK1 。
WK3
选用 WK3 可从 Lotus 1-2-3 的电子表格中导入数据。电子表格的每列对应表的一个字段;每行对应表一条记录。Lotus 1-2-3 3.x 版本创建的电子表格的扩展名为 .wk3 。.
WKS
选用 WKS 可从 Lotus 1-2-3 1-A 版本的电子表格中导入数据。电子表格的每列对应表的一个字段;每行对应表的一条记录。Lotus 1-2-3 1-A 版本创建的电子表格的扩展名为 .wks 。
WR1
选用 WR1 可从 Lotus Symphony 1.1 或 1.2 版本电子表格中导入数据。电子表格的每列对应表的一个字段;每行对应表的一条记录。Symphony 1.1 或 1.2 版本创建的电子表格的扩展名为 .wr1 。
WRK
选用 WRK 可从 Lotus Symphony 1.0 版本电子表格中导入数据。电子表格的每列对应表的一个字段;每行对应表的一条记录。 Symphony 1.0 版本创建的电子表格的扩展名为 .wrk 。
CSV
选用 CSV 可从一个各值之间用逗号分隔的文件中导入数据。一个 CSV 文件的第一行是字段名;当导入文件时,会忽略这个字段名。
XLS
选用 XLS 可从 Microsoft Excel 工作表中导入数据。工作表的每列对应表的一个字段,每行对应表的一条记录。由 Microsoft Excel 创建的工作表扩展名为 .xls 。
XL5
选用 XL5 可从 Microsoft Excel 5.0 版本中导入数据。工作表的每列对应表的一个字段;每行对应表的一条记录。由 Microsoft Excel 创建的工作表文件扩展名为 .xls 。如果省略 SHEET 子句,将从 Sheet1 中导入数据。为了导入指定工作表(sheet) 中的数据,需要包含 SHEET 关键字,并通过 cSheetName 指定工作表名。
XL8
选用 XL8 可从 Microsoft Excel 97 中导入数据。工作表的每列对应表的一个字段;每行对应表的一条记录。由 Microsoft Excel 创建的工作表文件扩展名为 .xls 。如果省略 SHEET 子句,将从 Sheet1 中导入数据。为了导入指定工作表(sheet) 中的数据,需要包含 SHEET 关键字,并通过 cSheetName 指定工作表的名称。
AS nCodePage
指定源表或源文件的代码页。Visual FoxPro 将复制源表或源文件中的内容,并在复制时自动把数据转换到当前表的代码页中。如果指定的 nCodePage 值无法使用,Visual FoxPro 将产生一个错误信息。您可以用 GETCP( ) 函数作为 nCodePage ,显示代码页对话框,在对话框中可以为追加的表或文件指定代码页。如果省略 AS nCodePage ,且 Visual FoxPro 不能判定源表或文件的代码页,Visual FoxPro 将复制源表或文件内容。并在复制数据的过程中,自动将数据转换到当前的 Visual FoxPro 代码页中。如果 SET CPDIALOG 为 ON ,当前选定工作区中的表以代码页标记。如果要从没有代码页标记的表中读入数据并添加到表中时,将显示代码页对话框,您可以在其中选择表的代码页。当前 Visual FoxPro 代码页可由 CPCURRENT( ) 函数设定。如果省略 AS nCodePage 且 Visual FoxPro 能确定追加记录的表或文件的代码页,Visual FoxPro 将复制表或文件的内容。并在复制数据的过程中,自动将数据转换到当前选定表的代码页中。如果 nCodePage 为 0 ,Visual FoxPro 假定需追加记录的表和文件的代码页与当前选定表的代码页相同,并且不进行当前 Visual FoxPro 代码页的转换。
说明
如果从其中追加数据的文件是 Visual FoxPro 表或是 FoxPro 早期版本中创建的表,其扩展名为 .dbf 。如果 Visual FoxPro 表或 FoxPro 早期版本中创建的表扩展名不是 .dbf ,您必须指定扩展名。如果文件不是 Visual FoxPro 表或 FoxPro 早期版本创建的表,您还必须另外指定文件的类型。
在从 dBASE IV 或 dBASE V 创建的包含备注字段的表中追加记录前,您必须先用 USE 命令在 Visual FoxPro 中打开此表。当提示是否要转换文件时,请选择是(Yes) 。
如果从 Visual FoxPro 表或 FoxPro 早期版本创建的表中读入记录,此表可以在另一个工作区中打开。对于源表中有删除标记的记录,一旦添加到表中,将会去掉删除标记。
使用 DBF( ) 函数可以从一个只读的临时表(cursor) 追加数据,该临时表(cursor) 是使用 SELECT - SQL 命令创建的。可象下面的例子中那样,在DBF( ) 函数中包含临时表(cursor) 的名称:
复制代码
APPEND FROM DBF('< 临时表(Cursor) 名>')
如果目标表使用了自动增量(autoincrementing) ,当 AUTOINCERROR 设置为 ON 时 APPEND FROM 会失败,除非 FIELDS 选项中省略了 AUTOINC 列。设置 AUTOINCERROR 为 OFF 或用 CURSORSETPROP( ) 关闭自动增量(autoincrementing) ,则允许成功地 APPEND FROM 。目标表的自动增量(autoincrementing) 字段或按指定值递增的字段,和源表中的值不适用。