美文网首页
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