将 .CSV 转换为 .DBF(dBASEIII) VFP 6.0,一切都变成备注字段
Converting .CSV to .DBF(dBASEIII) VFP 6.0, everything becomes memo field
我正在尝试使用 python 将 excel 文件转换为 dbf(dBASEIII),我当前的过程是:
- 使用 xlrd 将 excel 文件转换为 .csv
- 我从 .csv 中去掉 headers 并使用
- 获取新制作的.csv并使用dbf模块(https://pypi.python.org/pypi/dbf)转换为dbf
我从 csv 文件中删除 headers 并 运行 以下内容:
table = dbf.from_csv(origfname, filename='test.dbf', field_names=headers, dbf_type='db3')
截至目前,当流程结束时,所有字段都变成了备注字段,我如何将它们变成字符、日期、数字等...字段?
from_csv
方法仅用于转储到备注字段中。
如果您想要更多的控制权,那么您应该跳过 csv
步骤,使用 xlrd
和 dbf
从 xls
转到 dbf
。
需要做更多的工作:您必须先用适当的字段创建 table,然后遍历 xls table 并写入到数据库 table.
所以像这样:
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()
要自动生成字段名称和列类型,您需要循环浏览电子表格的前几行以获得 header 名称和值类型。这是我遍历的示例数据行:
<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 将 excel 文件转换为 dbf(dBASEIII),我当前的过程是:
- 使用 xlrd 将 excel 文件转换为 .csv
- 我从 .csv 中去掉 headers 并使用
- 获取新制作的.csv并使用dbf模块(https://pypi.python.org/pypi/dbf)转换为dbf
我从 csv 文件中删除 headers 并 运行 以下内容:
table = dbf.from_csv(origfname, filename='test.dbf', field_names=headers, dbf_type='db3')
截至目前,当流程结束时,所有字段都变成了备注字段,我如何将它们变成字符、日期、数字等...字段?
from_csv
方法仅用于转储到备注字段中。
如果您想要更多的控制权,那么您应该跳过 csv
步骤,使用 xlrd
和 dbf
从 xls
转到 dbf
。
需要做更多的工作:您必须先用适当的字段创建 table,然后遍历 xls table 并写入到数据库 table.
所以像这样:
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()
要自动生成字段名称和列类型,您需要循环浏览电子表格的前几行以获得 header 名称和值类型。这是我遍历的示例数据行:
<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'