您的位置:首页 > 编程语言 > Python开发

Python程序:批理转化Excel成CSV文件

2016-11-10 21:37 477 查看
        CSV逗点文件是个容易控制的文件,而且比较小,打开方便,经常会用到。比如用大量数据批量导入数据库,或者GPS记录的大量坐标文件的后处理。

       如果你有大量的Excel文件,如何省时省力的将他们转化成CSV文件呢?

       一个个另存为?当然如果你愿意这么做。可以的。

       使用网上下载的xls2csv?你就一个个往里边拖吧。而且出来的结果还带引号。

       也有其它方法,比如使用 pywin32通过WinCOM来操作Excel表格,或者使用xlrd。
       不过,我觉得,倘若你用PyExcelerator和Python就完全可以KO这个问题。     

       PyExcelerator的官方主页是http://sourceforge.net/projects/pyexcelerator

       好处是,不需要WinCOM支持,没装Office也 可以生成Excel表格。

       首先,你要下载安装这个python的包,安装方法是 python setup.py install 

       代码如下: 

       

 

 1 #! /usr/bin/env python
 2 #coding=utf-8
 3 #writer:parming    Email:ming5536@163.com
 4 from pyExcelerator import *
 5 import sys
 6 import glob
 7 class batxls2csv:
 8     def __init__(self):
 9                 pass
10     def savecsv1(self,arg):
11         matrixgolb = []
12         for sheet_name, values in parse_xls(arg, 'cp1251'): # parse_xls(arg) -- default encoding
13             matrix = [[]]
14             for row_idx, col_idx in sorted(values.keys()):
15                 #print row_idx,col_idx
16                 #print matrix
17                 v = values[(row_idx, col_idx)]
18                 if isinstance(v, unicode):
19                     v = v.encode('cp866', 'backslashreplace')
20                 else:
21                     v = str(v)
22                 last_row, last_col = len(matrix), len(matrix[-1])
23                 #下一行修改过
24                 while last_row <=row_idx:
25                     matrix.extend([[]])
26                     last_row = len(matrix)
27                 
28                 while last_col < col_idx:
29                     matrix[-1].extend([''])
30                     last_col = len(matrix[-1])
31                 
32                 matrix[-1].extend([v])
33             for row in matrix:
34                  csv_row = ','.join(row)
35                  matrixgolb.append(csv_row)
36         return matrixgolb        
37         print  matrixgolb
38     def savecsv2(self):
39         
40         filelist = glob.glob("*.xls")
41         for filenam in filelist:
42             matrixgolb=self.savecsv1(filenam)
43             namecsv=filenam[:-4]+'.csv'
44             file_object = open(namecsv, 'w+')
45             for item in matrixgolb:
46                 file_object.write(item)
47                 file_object.write('\n')
48             file_object.close( )
49             
50 if __name__ == "__main__":
51     test=batxls2csv()
52     test.savecsv2()

 

       其实下载的包中也有些小例子,我对其做了一些修改。不过这个例子只适合excel中只有一个表单Sheet1的情况。把所有的excel文件和程序放在同一个文件夹下,稍等片刻,执行完毕!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: