python操作excel

import time
import math
import pandas as pd
import xlsxwriter as xw

def test1():
    with pd.ExcelWriter('药典数据_nex.xlsx') as writer:
        df = pd.read_excel('药典数据.xlsx', sheet_name=0)

        s = 0
        t0 = time.time()

        numOnce = 2000
        total = 100000
        for i in range(math.ceil(total / numOnce)):
            for j in range(numOnce):
                df.loc[s, '中文名'] = '测试'

                if s%1000 == 0:
                    print(s)

                s += 1

        df.to_excel(writer, sheet_name='活性成分', index=False)
        print(time.time() - t0)


def test():
    with pd.ExcelWriter('药典数据_nex.xlsx') as writer:
        df = pd.read_excel('药典数据.xlsx', sheet_name=0)

        t0 = time.time()

        rows = list()
        numOnce = 2000
        total = 100000
        for i in range(math.ceil(total / numOnce)):
            for j in range(numOnce):
                v = {}

                v['中文名'] = '测试1'
                v['英文名'] = 'english'

                rows.append(v)

        d2 = pd.DataFrame(rows, columns=df.columns)
        d2.to_excel(writer, sheet_name='活性成分', index=False)

        print(time.time() - t0)


def xw_toexcel():  # xlsxwriter库储存数据到excel
    workbook = xw.Workbook('药典数据_nex.xlsx')  # 创建工作簿
    worksheet1 = workbook.add_worksheet("活性成分")  # 创建子表
    worksheet1.activate() # 激活表

    t0 = time.time()

    title = ['中文名', '英文名']  # 设置表头
    worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头

    k = 2 # 从第二行开始写入数据
    numOnce = 2000
    total = 100000
    for i in range(math.ceil(total / numOnce)):
        for j in range(numOnce):
            insertData = ['测试1', 'english1']
            row = 'A' + str(k)
            worksheet1.write_row(row, insertData)
            k += 1

    workbook.close() # 关闭表
    print(time.time() - t0)


if __name__ == '__main__':
    xw_toexcel()

方法2最占内存,也最快
方法3 内存占用和速度居中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值