Skip to content

Commit 79ab053

Browse files
committed
转表工具
1 parent ba908f1 commit 79ab053

3 files changed

Lines changed: 159 additions & 0 deletions

File tree

XlsxTools/xls2csv/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## xls2csv
2+
---
3+
### Xls转CSV小工具
4+
本工具支持将xls xlsx 格式的文件转换为csv
5+
6+
需要安装xlrd模块:
7+
* 首先到:https://pypi.python.org/pypi/xlrd 下载xlrd源码包
8+
* 在解压后的源码包内执行 python setup.py install
9+
* 重启命令行即可生效
10+
11+
使用方法:
12+
* 打开 config.ini 配置文件,配置输入路径以及输出路径
13+
* 执行 xlsx2csv.py 脚本进行自动导表

XlsxTools/xls2csv/config.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
输入路径(存放xls文件的路径),E:\GitProject\ColaFrameWork\Tools
2+
输出路径(导出csv文件的路径),E:\GitProject\ColaFrameWork\Tools

XlsxTools/xls2csv/xls2csv.py

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os,sys,inspect,re
4+
import xdrlib,xlrd
5+
6+
# 防止中文乱码
7+
reload(sys)
8+
sys.setdefaultencoding("utf-8")
9+
10+
#分割符
11+
C_SPACE = ","
12+
#结束符
13+
C_END = "\n"
14+
# 输入路径(存放xls文件的路径)
15+
IN_PATH = ""
16+
# 输出路径(导出csv文件的路径)
17+
OUT_PATH = ""
18+
19+
20+
# 读取配置文件
21+
def read_config():
22+
config_file = open("config.ini","r")
23+
cur_line = config_file.readline().rstrip("\r\n").split(',')
24+
global IN_PATH
25+
IN_PATH = cur_line[1]
26+
cur_line = config_file.readline().rstrip("\r\n").split(',')
27+
global OUT_PATH
28+
OUT_PATH = cur_line[1]
29+
30+
# 过滤路径
31+
def cur_file_dir(path):
32+
if os.path.isfile(path):
33+
path = os.path.dirname(path)
34+
print path
35+
return os.path.abspath(path)
36+
37+
#搜索指定文件夹下面的文件
38+
def find_file_by_pattern(pattern='.*', base=".", circle=True):
39+
# 查找给定文件夹下面所有
40+
re_file = re.compile(pattern)
41+
if base == ".":
42+
base = cur_file_dir(IN_PATH)
43+
print u"开始搜索文件夹:",base
44+
45+
final_file_list = []
46+
cur_list = os.listdir(base)
47+
for item in cur_list:
48+
# print item
49+
if item == ".svn":
50+
continue
51+
# 拼接路径
52+
full_path = os.path.join(base, item)
53+
# 忽略临时文件
54+
if full_path.startswith("~"):
55+
continue
56+
# 筛选出xlsx\xls文件
57+
if full_path.endswith(".xlsx") or full_path.endswith(".xls"):
58+
print u"输入文件:" + full_path
59+
bfile = os.path.isfile(item)
60+
if os.path.isfile(full_path):
61+
if re_file.search(full_path):
62+
final_file_list.append(full_path)
63+
else:
64+
final_file_list += find_file_by_pattern(pattern, full_path)
65+
66+
# 返回文件列表
67+
return final_file_list
68+
69+
70+
#打开excel
71+
def open_excel(file= 'file.xls'):
72+
try:
73+
data = xlrd.open_workbook(file)
74+
return data
75+
except Exception,e:
76+
print str(e)
77+
78+
79+
#根据索引获取Excel表格中的数据 参数:file:Excel文件路径, colnameindex:表头列名所在行的索引, by_index:表的索引
80+
def excel_table_byindex(file='file.xls', colnameindex=0, by_index=0):
81+
data = open_excel(file)
82+
table = data.sheets()[by_index]
83+
nrows = table.nrows #行数
84+
ncols = table.ncols #列数
85+
rowlist = []
86+
87+
'''开始读取数据'''
88+
for rownum in range(colnameindex, nrows):
89+
rowdata = table.row_values(rownum)
90+
if rowdata:
91+
collist = []
92+
for i in range(ncols):
93+
collist.append(rowdata[i])
94+
rowlist.append(collist)
95+
return rowlist
96+
97+
#保存csv文件
98+
def savaToCSV(_file, _list, _path):
99+
filename = ""
100+
content = ""
101+
#生成文件内容
102+
for collist in _list:
103+
for i in range(len(collist)):
104+
v = collist[i]
105+
vstr = ""
106+
# print k,v
107+
if isinstance(v, float) or isinstance(v, int):
108+
vstr = str(int(v))
109+
else:
110+
vstr = v
111+
if i > 0:
112+
content = content + C_SPACE
113+
content = content + vstr
114+
content = content + C_END
115+
116+
#生成文件后缀
117+
fname = os.path.splitext(_file)
118+
filename = fname[0] + ".csv"
119+
120+
#写文件
121+
if len(filename)>0 and len(content)>0:
122+
#filename = OUT_PATH + "/" + filename
123+
print u"输出文件:" + filename
124+
file_object = open(filename, 'w')
125+
file_object.write(content)
126+
file_object.close()
127+
128+
129+
def main():
130+
131+
read_config()
132+
filelist = find_file_by_pattern()
133+
if len(filelist) > 0:
134+
path = ""
135+
#遍历文件生成csv
136+
for file in filelist:
137+
datalist = excel_table_byindex(file, 0)
138+
if len(datalist)>0:
139+
savaToCSV(file, datalist, path)
140+
else:
141+
print u"没有找到任何excel文件!"
142+
143+
if __name__=="__main__":
144+
main()

0 commit comments

Comments
 (0)