python 操作excel 使用笔记

写入excel, 保存的过程中需要注意,保存格式xls后缀,如果用xlsx会报错

def set_style(name,height,bold=False):
    """"""
    import xlwt
    style = xlwt.XFStyle() # 初始化样式

    font = xlwt.Font() # 为样式创建字体
    font.name = name # 'Times New Roman'
    font.bold = bold
    font.color_index = 4
    font.height = height

    # borders= xlwt.Borders()
    # borders.left= 6
    # borders.right= 6
    # borders.top= 6
    # borders.bottom= 6

    style.font = font
    # style.borders = borders

    return style


def write_excel(rows=[{}]):
    """"""
    try:
        import xlwt

        book = xlwt.Workbook()
        # sheet1 = book.add_sheet('Sheet 1')
        # sheet1.write(0,0,'AAAAAAAAA1')
        # book.save("demo1.xls")  # 保存文件
        sheet1 = book.add_sheet(u'sheet1', cell_overwrite_ok=True)  # 创建sheet1
        row0 = [u"证书编号", u"执行结果"]
        for i, row in enumerate(row0):
            sheet1.write(0, i, str_unicode(row0[i]), set_style('Times New Roman', 220, True))
        for i, row in enumerate(rows):
            sheet1.write(i+1, 0, str_unicode(row[0]))
            sheet1.write(i+1, 1, str_unicode(row[2]))
        now = datetime.datetime.now()
        new_file_dir = '%s/%s' % ('temp_excel', now.strftime("%Y/%m/%d"))
        new_file_name = fileutil.reset_file_name('demo1.xls')   # 重命名文件
        xls_name = fileutil.get_absolute_file_path(new_file_name, new_file_dir)
        book.save(xls_name)  # 保存文件
        relative_xls_name = xls_name.split(settings.MEDIA_ROOT)[1]
        relative_xls_name = "/upload_media/%s" % relative_xls_name
        return relative_xls_name
    except Exception, e:
        log.error("card_write_excel:%s" % e)
        print e
        return ""

读取excel

from django.utils.encoding import smart_str, smart_unicode
import xlrd
def str_encode(s, encoding="utf-8"): """""" code_s = s try: code_s = smart_str(s, encoding=encoding) except Exception, e: code_s = smart_unicode(s, encoding=encoding) return code_s def str_unicode(s, encoding="utf-8"): """""" code_s = s try: code_s = smart_unicode(s, encoding=encoding) except Exception, e: code_s = smart_str(s, encoding=encoding) return code_s def read_excel(request): """""" xls_name = request.POST.get("excel", '') extract_name = request.POST.get("zip", "") # 读取远程文件 # response = urllib2.urlopen(file_url, timeout=0.2) # content = response.read() # book = xlrd.open_workbook(file_contents=content) # 读取本地文件 xls_name = fileutil.get_absolute_file_path(xls_name) book = xlrd.open_workbook(filename=xls_name) sheet = book.sheets()[0] rows = [] for i in xrange(1, sheet.nrows): row = Struct() row.line = i + 1 row.type_id = str_encode(sheet.cell(i, 0).value) row.card_no = str(str_encode(str(sheet.cell(i, 1).value))) row.card_id = str_encode(sheet.cell(i, 2).value) row.user_name = str_encode(sheet.cell(i, 3).value) row.spell_name = str_encode(sheet.cell(i, 4).value) row.level = str_encode(sheet.cell(i, 5).value) row.title = str_encode(sheet.cell(i, 6).value) row.ftitle = str_encode(sheet.cell(i, 7).value) row.ability = str_encode(sheet.cell(i, 8).value) rows.append(row) print rows

.

原文地址:https://www.cnblogs.com/weiok/p/5369741.html