Foxpro中,正常导入excel文件可以,用导入向导(do wzimport.app)说格式错误。在我的程序中怎样导入excel

2024-12-18 12:43:21
推荐回答(4个)
回答1:

从一个文件中读入记录,追加到当前表的尾部。
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 为何种设置,表中标记为删除的记录也将添加到当前表中。
?
显示打开对话框,从中可以选择从哪个表中读入记录。
FIELDS FieldList
指定添加哪些字段数据。
FOR lExpression
为当前选定表中每一条 lExpression 为“真”(.T.) 的记录追加新记录,直至达到当前选定表的末尾。如果省略 FOR,则整个源文件记录都追加到当前表中。
TYPE
指定源文件类型。如果指定的源文件类型不是 Visual FoxPro 表,则必须指定文件类型,但不必包括 TYPE 关键字。您可以从各种类型文件(包括分隔 ASCII 文本文件)中读入信息添加到表中,在这些文件中可以指定字段分隔符。
如果要追加的源文件扩展名不是默认的扩展名,源文件名必须包括文件扩展名。例如,Microsoft Excel 工作表通常具有 .XLS 扩展名。如果要追加的 Microsoft Excel 工作表扩展名不是 .XLS,一定要指定扩展名。
注意 如果要追加的记录来自工作表,工作表中的数据必须以主行序而非主列序存储,这样才能使追加的工作表数据符合表结构。
DELIMITED
指定源文件为分隔数据文件。分隔数据文件是 ASCII 文本文件,文件中每条记录以回车和换行符结尾。各字段内容默认地由逗号分开,字符字段值还需要用引号括上。例如:
"Smith",9999999,"TELEPHONE"
所有分隔数据文件的扩展名默认为 .TXT 数据的格式。
如果日期格式正确,可以从分隔文件中导入日期数据,日期的默认格式为 mm/dd/yy。您还可以选择加入世纪信息。Visual FoxPro 导入的数据(如 12/25/95)不包含世纪信息,世纪信息的默认值为 20 世纪。日期分隔符可以为任意非数值字符,但不能使用分隔文件中字段的分隔符。
如果其他一些日期格式与 SET DATE 中可以使用的格式相匹配,Visual FoxPro 也可以导入这些格式的日期数据。若要导入非默认格式的日期,应在使用 APPEND FROM 前先发出 SET DATE 修改数据格式设置。要想检查日期格式是否能成功地导入,可使用CTOD()函数。如果 CTOD()函数接收此日期值,则日期数据就能正确地导入。
DELIMITED WITH Delimiter
字符字段由 Delimiter 标识,而非引号。
DELIMITED WITH BLANK
由空格符 (BLANK) 分隔字段,而不是用逗号分隔字段。
DELIMITED WITH TAB
各字段由制表符 (TAB) 来分隔,而非逗号。
DELIMITED WITH CHARACTER Delimiter
字段之间由给定的 Delimiter 分隔。如果 Delimite 是分号,应用引号括起来,因为引号在 Visual FoxPro 中有特殊的意义:一个命令分在多行中书写时,用分号作为行的结束。Delimiter 可以是 BLANK 或 TAB 。
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 可从系统数据格式文件中导入数据。SDF 文件是一种 ASCII 文本文件,记录有固定长度,并且以回车和换行符结尾,各字段不分隔开。文件的默认扩展名为 .TXT。
从 SDF 文件到 Visual FoxPro 表时的有效的日期转换要求数据保存为 YYYYMMDD 格式。
如果日期格式保存为不明确的格式, 你应该映射日期列到一个适当宽度的字符列这样你可以检查转换后的值来改正转换程序以创建正确格式的日期数据。
SYLK
选用 SYLK 可从 SYLK(符号链接)交换格式文件中导入数据。SYLK 文件用于 Microsoft MultiPlan 中。SYLK 文件中的列对应 Visual FoxPro 表的字段,行对应表的记录。SYLK 文件没有扩展名。
WK1
选用 WK1 可从 Lotus 1-2-3 2.x 版本的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Lotus 1-2-3 2.x 版本创建的电子表格扩展名为 WK1。
WK3
选用 WK3 可从 Lotus1-2-3 的电子表格中导入数据,电子表格的每列为表的一个字段,每行为表的一条记录。Lotus1-2-3 版本 3.X 创建的电子表格扩展名为 .WK3。
WKS
选用 WKS 可从 Lotus1-2-3 1-A 版的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Lotus1-2-3 1-A 版本创建的文件扩展名为 .WKS。
WR1
选用 WR1 可从 Lotus Symphony 1.1 或 1.2 版的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Symphony1.1 或 1.2 版创建的电子表格扩展名为 .WR1。
WRK
选用 WRK 可从 Lotus Symphony 1.0 版的电子表格中导入数据。电子表格中的每列为表的一个字段,每行为表的一条记录。Symphony 1.0 版创建的电子表格扩展名为 .WRK。
CSV
选用 CVS 可从一个各值用逗号分隔的文件中导入数据。一个 CSV 文件的第一行是字段名;当导入该文件时,会忽略这个字段名。
XLS
选用 XLS 可从 Microsoft Excel 工作表中导入数据。工作表的每列为表的一个字段,每行为表的一条记录。由 Microsoft Excel 创建的工作表扩展名为 .XLS。
XL5
选用 XL5 可从 Microsoft Excel 5.0 版中导入数据。工作表的每列为表的一个字段,每行为表的一条记录。工作表文件的扩展名为 .XLS。
如果省略 SHEET 子句,会导入 Sheet1 中的数据。为了导入特定工作表中的数据,需要包含 SHEET 关键字,并且使用 cSheetName 指定工作表的名称。
XL8
包含 XL8 快导入 Microsoft Excel 97 的数据。工作表的列变成表中的字段;工作表的行变成表中的记录。在 Microsoft Excel 中创建的工作表文件的扩展名是 .xls。
如果省略 SHEET 子句,会导入 Sheet1 中的数据。为了导入特定工作表中的数据,需要包含 SHEET 关键字,并且使用 cSheetName 指定工作表的名称。
AS nCodePage
指定源表或源文件的代码页。Visual FoxPro 将复制源表或源文件的内容,并在复制时自动把数据转换到当前表的代码页中。
如果指定的 nCodePage 值无法使用,Visual FoxPro 将产生一条错误信息。您可以用GETCP()函数显示代码页对话框,在对话框中可以为追加的表或文件指定代码页。如果省略 AS nCodePage 子句,并且 Visual FoxPro 不能判定源表或文件的代码页,Visual FoxPro 将复制源表或文件内容,并在复制数据的过程中,自动将数据转换到当前的 Visual FoxPro 代码页中。如果 SET CPDIALOG 为 ON,当前选定工作区中的表以代码页标记。如果要从没有代码页标记的表中读入数据并添加到表中时,将显示代码页对话框,您可以在其中选择表的代码页。当前的 Visual FoxPro 代码页可以由CPCURRENT()函数设定。
如果省略 AS nCodePage 子句,并且 Visual FoxPro 可以确定追加记录的表或文件的代码页,Visual FoxPro 将复制表或文件的内容,并在复制数据的过程中,自动将数据转换到当前选定表的代码页中。
如果 nCodePage 为零,Visual FoxPro 认为需追加记录的表和文件的代码页与当前选定表的代码页相同,并且不进行代码页的转换。
备注
如果从其中追加数据的文件是 Visual FoxPro 表或在 FoxPro 早期版本中创建的表,其扩展名为 .DBF。如果其扩展名不是 .DBF,您必须指定扩展名。如果文件不是 Visual FoxPro 表或 FoxPro 早期版本创建的表,还必须指定文件的类型。
在从 DBASE IV 或 DBASE V 创建的包含备注字段的表中追加记录前,您必须先用USE 命令在 Visual FoxPro 中打开此表,当提示信息询问您是否要转换文件时,请选择“是”。
如果从 FoxPro 早期版本的表或 Visual FoxPro 表中读入记录,此表可以在另一工作区打开。对于源表中有删除标记的记录,一旦添加到表中,将会去掉删除标记。
使用 DBF()函数可以从一个只读的临时表追加数据,该临时表是使用 SELECT - SQL命令创建的。可象下例这样在 DBF()函数中包含临时表的名称:
APPEND FROM DBF('<临时表名>')
如果目标表使用了 autoincrementing, 当 AUTOINCERROR 设置为 ON 时 APPEND FROM 会失败, 除非 FIELDS 选项中缺省了 AUTOINC 列。设置 AUTOINCERROR 为 OFF 或用 CURSORSETPROP() 关闭 autoincrementing 允许成功地 APPEND FROM。目标表的 autoincrementing 字段或按指定值递增的字段, 和源表中的值不适用。
示例
以下示例用于打开表 customer,将其结构复制到表 backup 中,并且打开表 backup。然后 Visual FoxPro 将 customer 表中满足 'finland' 的记录追加到表 backup 中。这些记录然后又被复制到一个新的分隔文件 temp.txt 中。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && 打开 customer 表
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'Finland'
COPY TO temp TYPE DELIMITED
MODIFY FILE temp.txt
USE
DELETE FILE backup.dbf
DELETE FILE temp.txt

回答2:

格式错误说明导入的excl文件不符合foxpro数据库格式或版本不符合
在程序中导入excel用append FROM 文件名 TYPE XL8

回答3:

非常抱歉,Foxpro我不太熟悉,邦不上忙了

回答4:

buzhidao