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

        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:[email protected]
 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文件和程序放在同一个文件夹下,稍等片刻,执行完毕!源文件及安装包

 


 

 

  

转载于:https://www.cnblogs.com/ming5536/archive/2011/09/19/2181563.html

你可能感兴趣的:(数据库,python)