美文网首页
Python excel转txt (openpyxl)

Python excel转txt (openpyxl)

作者: 树十二 | 来源:发表于2020-09-15 17:09 被阅读0次

最近工作中出现了很多excel文件,尝试使用了SSIS将excel转化为txt,但是效率不高,每个feed都需要拉mapping,并且后续的ETL换了别的工具,有点浪费资源。

网上很多资料都是使用pandas模块,将excel转化为txt, 过于复杂,不太符合个人需求。
只需要最简单的,类似save as式的转换,能处理\n就可以了。

# -*- coding: UTF-8 -*-
import re
import codecs
import csv
import openpyxl
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


# 将excel转化为txt文件
def exceltotxt(excel_dir):
    print "source file %r" % excel_dir
    txt_dir = re.sub(r'.xlsx','',excel_dir) + '.txt'
    print "target file %r" % txt_dir

    wb = openpyxl.load_workbook(excel_dir, read_only=True)
    sh1 = wb["Sheet1"]
    with codecs.open(txt_dir, 'w', 'utf-8') as f:

        c = csv.writer(f,delimiter='\t')
        for r in sh1.rows:
            out_val_list = list()
            for cell in r:
                out_val = str(cell.value)
                val = re.sub(r'\n', '', out_val)
                out_val_list.append(val)
            c.writerow(out_val_list)

exceltotxt('xxx.xlsx')

PS:

  1. 读取large file时,记得一定要加上read_only=True。
  2. 出现 UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128) 问题,使用以下code解决。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

相关文章

网友评论

      本文标题:Python excel转txt (openpyxl)

      本文链接:https://www.haomeiwen.com/subject/bcxyektx.html