python excel读写与dict转换


学习excel读写,将一个excel文件内容转换为dict用于后续处理,将dict写入excel

# coding = 'utf-8'
import time
import xlrd,xlsxwriter

start = time.clock()
def read_excel(file):
    """
    读入excel文件
    :rtype : object
    :param file:
    :return: 数据对象
    """
    try:
        data = xlrd.open_workbook(file)
        return data
    except Exception as err:
        print(err)

def write_excel(file):
    """
    读入excel文件
    :rtype : object
    :param file:
    :return: 数据对象
    """
    try:
        data = XlsxWrite.Workbook(file)
        return data
    except Exception as err:
        print(err)


def excel_to_dict(read_excel_file,excel_title):
    """
    :rtype : object
    :return dict
    """
    dict2 = {}
    data = read_excel(read_excel_file)
    table = data.sheet_by_name(u'bas_info')
    for i in range(1,table.nrows):
        row_content = table.row_values(i, 0, table.ncols)
        dict1 = dict(zip(excel_title, row_content))
        dict2[i] = dict1
    return dict2


def dict_to_excel(dict_content,excel_title):
    """
    将字典写入excel中
    :type dict_content: object dict
    excel_title 列标题
    """
    dict_ing = dict_content
    excel_init_file = xlsxwriter.Workbook(out_excel_file)
    table = excel_init_file.add_worksheet('bas_info')
    title_bold = excel_init_file.add_format({'bold': True, 'border': 2, 'bg_color':'blue'})
    border = excel_init_file.add_format({ 'border': 1})
    for i,j in enumerate(excel_title):
        table.set_column(i,i,len(j)+1)
        table.write_string(0,i,j,title_bold)
    for k,v in dict_content.items():
        for i in range(len(v)):
            j = v.get(excel_title[i])
            table.write_string(k,i,j,border)
    table.set_column(1,1,16)
    table.set_column(0,0,16)
  
excel_init_file.close()
if __name__ == '__main__': 
  read_excel_file
= r'D:\baspools_read.xlsx'
  out_excel_file
= r'D:\baspools_out.xlsx'
  excel_title
= ['basname', 'basip', 'location', 'baslocation', 'port', 'basprovider', 'portal_version', 'timeout', 'retry','auth_type']
  dict_content
= excel_to_dict(read_excel_file,excel_title) #excel to dict
  dict_to_excel(dict_content,excel_title) #dict to excel write to out_excel_file
  end
= time.clock()
  print("read: %f s" % (end - start))