数据表行列转换工具_说明
---
作者:taoether
版本 :1.00
制作日期:2007-02-01
发行日期:2007-02-02
作者邮箱:taoether@126.com
更新人:
更新日期:
---
此程序是我因需而作的,考虑到别人也可能遇到这种情况,所以大致整理了一下发出来,所以显得很粗糙。过程也显得有些繁琐,导入导出的很麻烦。请大家原谅,如果时间允许,我会进行优化的。如果有的朋友有兴趣,也可以进行优化,不过别忘了告诉我一声,否则会重复制作,浪费精力。
此程序可以对表的数据实现行列转换,就是将原表的行,列分别作为目标表的列和行,并对自动转换其中的数据。
如以下示例:表一经过转换后,变成表二形式。
表一:数据库表字段规格表
|
字段名 |
名称 |
序列 |
数据类型 |
整数位数 |
小数位数 |
可为空? |
|
PART_NO |
零件编号 |
0010 |
CZ |
30 |
0 |
0 |
|
VENDOR_NO |
供货商编号 |
0020 |
CZ |
5 |
0 |
0 |
|
VEN_PART_NO |
供货商零件编号 |
0030 |
CZ |
60 |
0 |
1 |
表二:数据库表(可以直接导入到数据库中,将第一行作为标题行,省略直接建表时的输入工作)
|
字段名 |
PART_NO |
VENDOR_NO |
VEN_PART_NO |
|
名称 |
零件编号 |
供货商编号 |
供货商零件编号 |
|
序列 |
0010 |
0020 |
0030 |
|
数据类型 |
CZ |
CZ |
CZ |
|
整数位数 |
30 |
5 |
60 |
|
小数位数 |
0 |
0 |
0 |
|
可为空? |
0 |
0 |
1 |
有时我们开始建表时疏于考虑,行列设置不合理,当我们发现时,表中已经输入了大量的数据,这时再进行转换如果没有工具,光是手动,那肯定是件头痛的事。现在好了,你可以用这个小工具进行转换,很方便的,下面详细说明如何操作。
假设有一个源表,数据为m行,n列,处理过程如下。
1, 整理源表中的数据。
1) 将源表中的单引号替换掉,可以替换为空或其他的字符。
2) 将日期格式化为YYYY-MM-DD格式。
3) 在源表上插入2行,2行为相同的数据,数据为A1,A2,A3……An。(说明:第一行是为了导入源表时作为标题行,第二行为了让access将所有列的数据类型均设为文本)。以上表为例,处理后如下:
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
|
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
|
字段名 |
名称 |
序列 |
数据类型 |
整数位数 |
小数位数 |
可为空? |
|
PART_NO |
零件编号 |
0010 |
CZ |
30 |
0 |
0 |
|
VENDOR_NO |
供货商编号 |
0020 |
CZ |
5 |
0 |
0 |
|
VEN_PART_NO |
供货商零件编号 |
0030 |
CZ |
60 |
0 |
1 |
2, 导入源表: 将源表导入,命名为“TSource”,导入时注意以下两点:
1) 以源表第一行作为列标题。
2) 让access自动添加主键(字段名:ID)
3, 制作生成表: 根据导入的数据库表Tsource行数和列数,在EXCEL中制作生成表。
1) 以B1,B2,B3……B(m+1)作为表标题行,列数为数据库表Tsource的行数m+1。
2) 以B1,B2,B3……B(n+1)作为表的第一列值,行数为数据库表Tsource的列数n+1。
|
B1 |
B2 |
B3 |
B4 |
B5 |
|
B2 |
|
|
|
|
|
B3 |
|
|
|
|
|
B4 |
|
|
|
|
|
B5 |
|
|
|
|
|
B6 |
|
|
|
|
|
B7 |
|
|
|
|
|
B8 |
|
|
|
|
4, 导入生成表:将生成表导入,命名为“Taim”,导入时注意以下两点:
1) 以生成表第一行作为列标题。
2) 让access自动添加主键(字段名:ID)
5, 数据处理:打开数据库主窗体:RowTrans。输入源表的行数=m,列数=n+1,点击按钮[开始转换]。程序自动转换,转换完成后提示完成,转换后的数据保存到数据表“Taim”中。
6, 导出生成表:将数据库中生成表“Taim”,导出为文本文件,再用Excel打开。(如表中无数字型数据,也可以直接导出为Excel,如有数字型数据尽量不要直接导出。)
7, 整理生成表:去掉多余的行和列,再按自己的喜欢再整理生成表,完成转化过程。
经过作者测试,转化一个106列*42行的表,用时约20秒,还算可以接受。
欢迎各位朋友来信交流,我的邮箱:taoether@126.com。