2024-09-29 06:33:25 发布
网友
有没有一种简单的方法,使用一些常见的Unix脚本语言(Perl/Python/Ruby)或命令行实用程序,将Excel电子表格文件转换成CSV?具体来说,这个:
http://www.econ.yale.edu/~shiller/data/ie_data.xls
尤其是电子表格的第三张(前两张是图表)。
或许xlrd可以完成这项工作(在Python中)
编辑:我真的应该学会阅读问题。但是写csv不应该是个大问题,所以也许你可以实际使用它。
有一个非常好的Perl库可以用于xls读取:Spreadsheet::ParseExcel。
您可以在python中使用pyexcelerator。
此代码(作为xls2csv.py包含在pyexcelerator的examples文件夹中)从电子表格中提取所有表格,并将它们作为CSV输出到stdout。
xls2csv.py
examples
stdout
你可以很容易地改变代码来做你想做的事情。
pyexcelerator最酷的地方在于,您还可以使用它来编写/创建excel xls文件,而无需安装excel。
#!/usr/bin/env python # -*- coding: windows-1251 -*- # Copyright (C) 2005 Kiseliov Roman __rev_id__ = """$Id: xls2csv.py,v 1.1 2005/05/19 09:27:42 rvk Exp $""" from pyExcelerator import * import sys me, args = sys.argv[0], sys.argv[1:] if args: for arg in args: print >>sys.stderr, 'extracting data from', arg for sheet_name, values in parse_xls(arg, 'cp1251'): # parse_xls(arg) -- default encoding matrix = [[]] print 'Sheet = "%s"' % sheet_name.encode('cp866', 'backslashreplace') print '----------------' for row_idx, col_idx in sorted(values.keys()): v = values[(row_idx, col_idx)] if isinstance(v, unicode): v = v.encode('cp866', 'backslashreplace') else: v = str(v) last_row, last_col = len(matrix), len(matrix[-1]) while last_row < row_idx: matrix.extend([[]]) last_row = len(matrix) while last_col < col_idx: matrix[-1].extend(['']) last_col = len(matrix[-1]) matrix[-1].extend([v]) for row in matrix: csv_row = ','.join(row) print csv_row else: print 'usage: %s (inputfile)+' % me
或许xlrd可以完成这项工作(在Python中)
编辑:我真的应该学会阅读问题。但是写csv不应该是个大问题,所以也许你可以实际使用它。
有一个非常好的Perl库可以用于xls读取:Spreadsheet::ParseExcel。
您可以在python中使用pyexcelerator。
此代码(作为
xls2csv.py
包含在pyexcelerator的examples
文件夹中)从电子表格中提取所有表格,并将它们作为CSV输出到stdout
。你可以很容易地改变代码来做你想做的事情。
pyexcelerator最酷的地方在于,您还可以使用它来编写/创建excel xls文件,而无需安装excel。
相关问题 更多 >
编程相关推荐