python - 将 .CSV 转换为 .DBF(dBASEIII) VFP 6.0,一切都变成备注字段

标签 python visual-foxpro foxpro dbf dbase

我正在尝试使用 python 将 excel 文件转换为 dbf(dBASEIII),我当前的过程是:

  1. 使用 xlrd 将 excel 文件转换为 .csv
  2. 我从 .csv 中取出 header 并使用
  3. 获取新制作的 .csv 并使用 dbf 模块 ( https://pypi.python.org/pypi/dbf ) 转换为 dbf

我从 csv 文件中删除 header 并运行以下命令:

table = dbf.from_csv(origfname, filename='test.dbf', field_names=headers, dbf_type='db3')

截至目前,当流程结束时,所有字段都变成了备注字段,我如何将它们变成字符、日期、数字等...字段?

最佳答案

from_csv 方法仅用于转储到备注字段中。

如果你想要更多的控制,那么你应该跳过 csv 步骤,使用 xlrdxlsdbf code> 和 dbf

这将需要更多的工作:您必须首先使用适当的字段创建表,但随后只需遍历 xls 表并写入 dbf 表即可。

所以像这样:

some_table = Dbf.Table(
        'whatever.dbf',
        'name C(25); age N(3); history M',
        codepage='cp1252',
        )

# get data from xlrd (specifics are not correct, psuedo-code only)
...
data = []
for row in sheet:
    for cell in row:
        data.append(cell.value)
    # back to real code
    some_table.append(tuple(data))
 # all data has been transferred
 some_table.close()

要自动生成字段名称和列类型,您需要循环浏览电子表格的前几行以获取标题名称和值类型。这是我遍历的示例数据行:

<type 'unicode'> u'PROD'
<type 'unicode'> u'cclark'
<type 'float'> 4.0
<type 'float'> 99.0
<type 'unicode'> u'501302'
<type 'unicode'> u'244026'
<type 'int'> 1
<type 'float'> 42444.0
<type 'str'> ''
<type 'unicode'> u'AB'

关于python - 将 .CSV 转换为 .DBF(dBASEIII) VFP 6.0,一切都变成备注字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905947/

相关文章:

python - 类型错误 : zip argument #2 must support iteration

sql - 将 Visual Foxpro 数据库导入到 SQL Server

visual-foxpro - 当 FoxPro 中的表单处于事件状态时打印到主窗口

c# - 从可视化 foxpro 数据源动态获取架构的速度问题

c# - 如何使用 MS Ole DB 提供程序创建跨两个 foxpro 数据库的连接?

python - 运行 Flask 容器时 pycharm 分析没有输出

python - if substring in string,当子串有多个值时

php - 从 PHP/Linux 读取 Foxpro 文件 (.DBF)

python - 是什么导致了数学域错误?

c++ - 将 DBF 转换为 JSON