zoukankan      html  css  js  c++  java
  • python excel操作总结

    1.openpyxl包的导入

    Dos命令行输入 pip install openpyxl==2.3.3

    这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2.3.3

    验证是否安装成功:python交互模式下导入包 import openpyxl

    2.一个简单的excel中写入数据的操作

    #未从文件系统生成真的excel文件,仅仅是实例化了一个Workbook实例

    wb = Workbook()#workbook类似一个excel文件

    # wb.active获取第一个sheet  .active默认为第一个sheet

    ws = wb.active  

    excel中写入数据的方法:

    # 方法1:直接在表格中赋值

    ws['A1'] = 42  

    ws["A2"]=u"中国" #写入中文

    ws["A3"]='12%'  #写入12%

    ws["A4"]=31.75  #写入小数

    ws["A5"]=datetime.datetime.now()  #写入日期

    # 方法2:在表格中添加一行,每一个元素占一格

    #备注:如果excel第一行已经有数据了,用ws.append会替换掉之前第一行的数据。如果不想被覆盖就用ws['xx'] = xx的方法

    ws.append([1, "china", "中国"])

    ws.append(['qrp',18])

    ws.append(['qrp','love swimming'])

    # 在excel中写入日期对象,会自动转化为字符串

    import datetime

    print type(datetime.datetime.now())

    ws['A3'] = datetime.datetime.now()

    #生成真实的excel文件,保存

    wb.save(u"第2个文件.xlsx")

    3.sheet的操作

    Excel默认有一个sheet (注意,这里根据使用的excel不一样,默认sheet个数不一样)

    #0.修改默认sheet的方法

    ws0=wb.active  #active默认为第一个sheet

    print ws0.title

    ws0.title="python"

    print ws0.title

    #1.excel的第一个位置加入一个sheet

    ws2 = wb.create_sheet("Mysheet", 0)

    #2.excel的的最后位置加入一个sheet(一般默认加在最后一个)

    ws1 = wb.create_sheet(u"光荣之路")

    #3.修改sheet的名字

    ws2.title=u"python excel 操作练习"

    可以在新建sheet的时候就修改sheet名字,例如

    ws2 = wb.create_sheet(title=u"新建的sheet2")

    #4.通过名字获取某个sheet对象

    ws3 = wb[u"python excel 操作练习"]

    #5.通过名字获取某个sheet对象的第二种方法

    ws4 = wb.get_sheet_by_name(u"光荣之路")

    #6.通过索引号获取某个sheet对象的第种方法

    ws5=wb.get_sheet_by_name(wb.sheetnames[0])

    print ws5.title

    #7.打印所有sheet的名字的两种方法,用列表存储所有名字

    print wb.get_sheet_names()

    Print wb.sheetnames

    #8.设定sheet的背景样色

    #颜色编码的网址:http://www.computerhope.com/htmcolor.htm

    ws1.sheet_properties.tabColor = "FFFF00"

    ws2.sheet_properties.tabColor = "FFA62F"

    #9.打印sheet的名字

    print ws3.title

    print ws4.title

    #10.遍历输出excel中的所有sheet名字

    for sheet in wb:

    print(sheet.title)

    4.cell单元格的操作

    #coding utf-8

    from openpyxl import Workbook

    wb=Workbook()

    ws = wb.create_sheet(u"光荣之路")

    #1.给单元格添加数据

    ws.append(['gilr','18'])  

    ws['A2']=u'男生'

    ws['B2']='20'

    #2.修改并读取一个cell的内容

    cell.value=u"30"

    print cell.value

    #3.通过单元格字母标识获取对象

    cell=ws['B2']

    print cell.value,type(cell.value)

    print ws['A2'].value,type(ws['A2'].value)

    #4.通过单元格序号,设定某个单元格对象的值

    #单元格和列,均从1开始编号

    cell2=ws.cell(row=4, column=1, value=u"我是通过行列加进来的")

    print cell2.value

    #5.通过循环创建100个单元格

    for i in range(1,11):

        for j in range(1,11):

            ws.cell(row=i, column=j, value=str(i)+u"行"+str(j)+u"列")

            

    #6获取最大行和最大列

    print ws.max_row

    print ws.max_column

    print ws.min_row

    print ws.min_column

    #7.获取所有单元格的值和坐标值

    for row in ws.iter_rows():#获取了所有的行

        for cell in row:   #获取每一行中每个单元格

            print cell,cell.value,cell.coordinate  #打印单元格,单元格的值,cell.coordinate表示单元格的坐标

            

    #range_string="A1:j10"

    for row in ws.iter_rows(range_string="A1:j10"):#获取了所有的行

        for cell in row:   #获取每一行中每个单元格

            print cell,cell.value,cell.coordinate  #打印单元格,单元格的值,cell.coordinate表示单元格的坐标                

    #8.get_column_letter(col)函数可以获取到列的字母

    #{0}.format(xx)字符串模板 将xx的值赋值给{0}

    for row in range(10,20):

        for col in range(10,20):

            ws1.cell(row=row ,column=col ,value='{0}'.format(get_column_letter(col)))

    #定义excel文件保存后的文件名

    dest_filename = u'excel重命名文件.xlsx'

    wb.save(dest_filename)

    5.图片操作

    图片操作之前先要安装一个PIL的包。Pip install 命令不好使 直接用可执行文件。

    from openpyxl import Workbook

    from openpyxl.drawing.image import Image

    wb = Workbook()

    ws = wb.active

    ws['A1'] = 'You should see three logos below'

    # create an image

    img1 = Image('1.png')

    img2=Image("1.png")

    # add to worksheet and anchor next to cells

    ws.add_image(img1, "A3")

    ws.add_image(img2, "C5")

    #相同的图片对象没办法赋给多个单元格,如果这样做会导致图片重叠在一起。

    #但是可以生成两个不同的图片对象来给多个单元格赋值。

    wb.save(u'图片操作.xlsx')

    6.获取行和列的操作

    from openpyxl import Workbook

    #未从文件系统生成真的excel文件,仅仅是实例化了一个Workbook实例

    wb = Workbook()

    ws=wb.active

    ws.append([1,2])

    ws.append([3,4])

    print ws.rows  #打印所有的行

    print ws.rows[0][0] #打印第一行第一个 注意角标从0开始算起

    print ws.rows[0][0].value #打印第一行第一个的值

    print ws.columns  #打印所有的列

    print ws.columns[1][1]

    print ws.columns[1][1].value

    wb.save(u"获取行和列的值.xlsx")

    7.workbook中的缺省参数

    filename(str or file-like object):是一个Excel文件的路径或者是一个类文件对象。
    read_only(bool):只读模式,不可编辑文件。缺省为False
    use_iterators(bool):是否调用延迟加载。缺省为False
    keep_vba(bool):是否保持VBA的内容。缺省为False
    guess_type(bool):获取单元格内容的类型而且不能从文件中读取他。缺省为False
    date_only(bool):控制包含有公式的单元格是否有任何公式,或者存储着最后读取Excel表的读取时

  • 相关阅读:
    Codeforces Round #499 (Div. 2)
    Codeforces Round #500 (Div. 2) [based on EJOI]
    Codeforces Round #508 (Div. 2)
    Codeforces Round #449 (Div. 2)
    Willem, Chtholly and Seniorious
    【生成树,堆】【CF1095F】 Make It Connected
    【乱搞】【CF1095E】 Almost Regular Bracket Sequence
    【数学】数论进阶-常见数论函数
    【数论】数论进阶-Preknowledge
    【cdq分治】【CF1093E】 Intersection of Permutations
  • 原文地址:https://www.cnblogs.com/qiurp/p/6520578.html
Copyright © 2011-2022 走看看