美文网首页
2018-08-14 openpyxl小计

2018-08-14 openpyxl小计

作者: 玛尼妈咪哄 | 来源:发表于2018-08-14 16:18 被阅读0次

    自从来到朗讯之后,由于经理有个小项目,所以一直在用openpyxl来处理excel,期间遇到了无数的坑坑洼洼啊,现在来总结一下
    1.关于复制sheet表,我在网上查到用copy_worksheet(),但是此方法不可以改变表的位置,创建完之后在最后一个。然后我查了源码,发现openpyxl有个模块:copier。他有一个WorksheetCopy(source_sheet,target_sheet)对象接收两个参数,第一个是source_sheet,第二个是target_sheet,所以我们可以先create_sheet(sheetname,index)来创建target_sheet这样位置可以随便选.
    copoer.WorksheetCopy(source_sheet,target_sheet).copy_worksheet()这样便可以随心所欲的复制了
    2.之前处理有公式的excel,我想要读取里面的数据,但是读取之后发现是公式,这时你应该在load_workbook(*.xlsx,data_only=True),这样你便可以读取里面的数据了,如果你有的想要数据其他的想要公式,你可以用两种打开方式来操作。但是如果你保存的时候用的是data_only=False的方式,那么你想接着操作此excel必须要先打开一下保存(我也不知道为什么他没有保存),当然你如果在windows下操作你可以写一个程序单独跑一次来保存:
    import win32com.client as wc
    def just_open(filename):
    xlApp = wc.Dispatch("Excel.Application")
    xlApp.Visible = False
    xlBook = xlApp.Workbooks.Open(filename)
    xlBook.Save()
    xlBook.Close()
    只需要简单的打开保存一下就好
    如果你在linux下操作,你有两张方法操作:
    2.1 将excel表中的公式,对应在python中处理
    2.2将excel的公式读取,然后写到与之对应的单元格中
    3.得到指定值的下标的方法
    from openpyxl.utils import get_column_letter, column_index_from_string
    for cell in sheet_cal[3]:
    if isinstance(cell.value, datetime.datetime):
    if date == cell.value.date():
    col_cal_num = column_index_from_string(cell.column)
    这个是对日期的操作,但是你的如果是一般的字符串,可以直接得到
    for row in worksheet.rows:
    for cell in row:
    if ** == cell.value:
    print(cell.column)
    cell.column得到的是字母下标,column_index_from_string()得到字母下标的数字

    相关文章

      网友评论

          本文标题:2018-08-14 openpyxl小计

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