澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

太阳集团太阳娱乐登录python3操作Excel openpyxl模块
分类:软件下载

问题:使用python操作Excel,哪个库相比较有利易学?

python 与excel

部分摘自官网文书档案.

回答:

设置模块

本例子中运用的模块为:

openpyxl

版本为2.4.8

设置方式请参谋早先发布的篇章(Python 的pip模块安装方式)

Python处理Excel表格

选拔模块:openpyxl(2.4.8)

该模块安装很简短

推荐Pandas库,因为无论用Python做多少剖判还是用Python做机械学习,Pandas都是用得非常多的,个人认为是也最有利。

大旨接纳办法

1.先是导入模块:import openpyxl

2.开荒三个早就存在的excel文件:

wb=openpyxl.load_workbook('example.xlsx')

(文件金华昆本放在同一个索引下,假使不是的话需求增添路线

wb=wpenpyxl.load_workbook(r'c:maxingpythonexample.xlsx'))

那时候wb是一个workbook对象,表示的是一体Excel文件,类似于file对象表示贰个文本文件。

3.获取Excel文件中现实的表:

  • sheet=wb.get_sheet_name('Sheet1')#根据表名获取

  • sheet=wb[‘Sheet1’]#更简洁的办法

  • sheet=wb.get_active_sheet()#赢得当前激活的表(即张开Excel暗许展开的表)

  • sheet=wb.active#通过品质获取当前激活的表

Sheet.title能够获得表的名字。

4.获取表中的行与列

  • sheet.rows

  • sheet.columns

注意这里得到的行与列是三个生成器对象

>>> sheet.rows

 

 

5.获取表的总店数与总列数

  • 总行数:len(list(sheet.rows)) 总列数:len(list(sheet.columns))

  • 一向调用属性:sheet.max_row;sheet.max_column

6.拿走单元格对象

cell=sheet[‘A1’]#得到了一个单元格对象

cell.value#取得该单元格的值

这种艺术是使用Excel种暗许的行(数字)与列(字母)的样式来赢得相应的单元格。

其余一种艺术是平昔钦命命名参数:

  • cell=sheet.cell(row=2,column=2)

  • cell.value#收获单元格的值

  • cell.row#得到相应的行

  • cell.column#收获相应的列

  • cell.cordinate#获得相应的坐标

$ pip install xlwt

以下从5个方面回应:

例子

>>> cell=sheet.cell(row=2,column=2)

>>> cell.value

'苹果'

>>> cell.row

2

>>> cell.column

'B'

>>> cell.coordinate

'B2'

这种方式都以用数字来代表行与列(第一行事1不是0

那二种工具互转变:

>>> openpyxl.utils.cell.column_index_from_string('A')

1

>>> openpyxl.utils.cell.column_index_from_string('AC')

29

>>> openpyxl.utils.cell.get_column_letter(1)

'A'

>>> openpyxl.utils.cell.get_column_letter(29)

'AC'

>>>

7.到手某二个区域的数码

>>> sheet['A1:C3']

((<cell 'sheet1'.a1="">, <cell 'sheet1'.b1="">, <cell 'sheet1'.c1="">), (<cell 'sheet1'.a2="">, <cell 'sheet1'.b2="">, <cell 'sheet1'.c2="">), (<cell 'sheet1'.a3="">, <cell 'sheet1'.b3="">, <cell 'sheet1'.c3="">))

 

>>> type(sheet['A1:C3'])

<class 'tuple'="">

 

>>> import pprint#上边打字与印刷太乱,导入美丽打字与印刷模块

>>> pprint.pprint(sheet['A1:C3'])

((<cell 'sheet1'.a1="">, <cell 'sheet1'.b1="">, <cell 'sheet1'.c1="">),

 

(<cell 'sheet1'.a2="">, <cell 'sheet1'.b2="">, <cell 'sheet1'.c2="">),

 

(<cell 'sheet1'.a3="">, <cell 'sheet1'.b3="">, <cell 'sheet1'.c3="">))

 

注意到sheet['A1:C3']赢得到的是一个元组组成的元组。

8.赢得具备的表名

>>> wb.get_sheet_names()

['my first sheet']

回来的是三个列表。

先来个大致的事例:

  1. 安装Pandas

  2. 数据源

  3. 利用Python读取Excel文件

  4. 动用Python做多少透视

  5. 将数据保存到Excel文件

向表格中写入数据

1.新建三个Excel文件

>>> from openpyxl import Workbook

>>> wb=Workbook()

>>> wb

 

 

诸有此类便创设了二个Workbook对象,实际上还未有生成Excel文件,要实际变化该Excel文件要求调用save函数之后。

暗中同意Workbook对象将创造一张表“sheet”

>>> wb.active

<worksheet 'sheet'="">

 

>>> sheet=wb.active

>>> sheet.title='my first sheet'

>>> sheet.title

'my first sheet'

通过sheet.title属性能够修改表名。

2.保存

>>> wb.save('test.xlsx')

那儿在干活目录下才会生成test.xlsx文件。

3.扩充及删除表

>>> wb.create_sheet()

<worksheet 'sheet1'="">

>>> wb.get_sheet_names()

['Sheet', 'Sheet1']

>>> wb.create_sheet('names')

<worksheet 'names'="">

>>> wb.get_sheet_names()

['Sheet', 'Sheet1', 'names']

>>> wb.create_sheet(index=0,title='first tab')

<worksheet 'first="" tab'="">

>>> wb.get_sheet_names()

['first tab', 'Sheet', 'Sheet1', 'names']

>>> wb.create_sheet(index=len(wb.get_sheet_names()),title='last tab')

<worksheet 'last="" tab'="">

>>> wb.get_sheet_names()

['first tab', 'Sheet', 'Sheet1', 'names', 'last tab']

>>> wb.remove_sheet(wb['first tab'])

>>> wb.get_sheet_names()

['Sheet', 'Sheet1', 'names', 'last tab']

4.向单元格中写入音讯

>>> sheet['A1']='Hello world!'

>>> sheet.cell(row=2,column=2).value='张三'

>>> sheet['B2'].value

'张三'

5.单元格字体风格

率先要导入相应的函数:

from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font

默许设置如下:

>>> font=Font(name='Calibri',

... size=11,

... bold=False,

... italic=False,

... vertAlign=None,

... underline='none',

... strike=False,

... color='FF000000')

>>> fill=PatternFill(fill_type=None,

... start_color='FFFFFFFF',

... end_color='FF000000')

>>> border=Border(left=Side(border_style=None,

... color='FF000000'),

... right=Side(border_style=None,

... color='FF000000'),

... top=Side(border_style=None,

... color='FF000000'),

... bottom=Side(border_style=None,

... color='FF000000'),

... diagonal=Side(border_style=None,

... color='FF000000'),

... diagonal_direction=0,

... outline=Side(border_style=None,

... color='FF000000'),

... vertical=Side(border_style=None,

... color='FF000000'),

... horizontal=Side(border_style=None,

... color='FF000000')

... )

>>> alignment=Alignment(horizontal='general',

... vertical='bottom',

... text_rotation=0,

... wrap_text=False,

... shrink_to_fit=False,

... indent=0)

>>> number_format='General'

>>> protection=Protection(locked=True,

... hidden=False)

>>>

例子:

为单元格设置样式

>>> cell1=sheet['A1']

>>> cell2=sheet['A2']

>>> ft1=Font(color=colors.RED)

>>> ft2=Font(color='00FF00',size=30)

>>> cell1.font=ft1

>>> cell2.font=ft2

复制样式:

>>> fromopenpyxl.stylesimportFont

>>> fromcopyimportcopy

>>>

>>> ft1=Font(name='Arial', size=14)

>>> ft2=copy(ft1)

>>> ft2.name='Tahoma'

>>> ft1.name'Arial'

>>> ft2.name'Tahoma'

>>> ft2.size# copied from the14.0

自定义样式:

>>> from openpyxl.styles import NamedStyle, Font, Border, Side

>>> highlight = NamedStyle(name='highlight')

>>> highlight.font = Font(bold=True, size=20)

>>> bd = Side(style='thick', color='000000')

>>> highlight.border = Border(left=bd, top=bd, right=bd, bottom=bd)

创办好后便足以选择到workbook了

>>> wb.add_named_style(highlight)#第一步

>>> ws['A1'].style = highlight#第二步

Once registered assign the style using just the name:

>>> ws['D5'].style = 'highlight'#然后就足以一贯调用字符串格局了

7.联合与拆分单元格

import openpyxl

wb=openpyxl.load_workbook('two.xlsx')

sheet=wb.active

sheet.merge_cells('A1:A2')

wb.save('three.xlsx')

同理拆开单元格正是sheet.unmerge_cells('A1:A2'),可是在交互式情状中得以,写在py文件中就能够报错,不知什么来头。

#!/usr/bin/python
#coding=utf-8
# ==============================================================================
#
#       Filename:  demo.py
#    Description:  excel operat
#        Created:  Tue Apr 25 17:10:33 CST 2017
#         Author:  Yur
#
# ==============================================================================

import xlwt
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding = 'utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('My Worksheet')

# 写入excel
# 参数对应 行, 列, 值
worksheet.write(1,0, label = 'this is test')

# 保存
workbook.save('Excel_test.xls')

安装Pandas

运作后 会在现阶段目录生成三个Excel_test.xls

在cmd窗口中,输入指令:pip install pandas

合法例子:

太阳集团太阳娱乐登录 1

太阳集团太阳娱乐登录 2

数据源

运行那几个事例的时候 报错

例如,Excel文件Bank_Data.xlsx中有以下数据:

太阳集团太阳娱乐登录 3

太阳集团太阳娱乐登录 4

协和又写了二个:

利用Python读取Excel文件

#!/usr/bin/python
#coding=utf-8
# ==============================================================================
#
#       Filename:  style.py
#    Description:  style
#        Created:  Thu Apr 27 15:07:53 CST 2017
#         Author:  Yur
#
# ==============================================================================


import xlwt

workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman' 
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
worksheet.write(0, 0, 'Unformatted value') # 不带样式的写入

worksheet.write(1, 0, 'Formatted value', style) # 带样式的写入

workbook.save('formatting.xls') # 保存文件

首先,须求读取Excel文件中的数据,有三种办法:

效果:

1、读取Excel文件的率先种艺术

太阳集团太阳娱乐登录 5

bankdata=pd.read_excel('../data/Bank_Data.xlsx',sheet_name='bankdata',index_col='银行编号')
bankdata.head()

安装单元格宽度:

运维结果:

import xlwt

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0,'My Cell Contents')

# 设置单元格宽度
worksheet.col(0).width = 3333
workbook.save('cell_width.xls')

太阳集团太阳娱乐登录 6

输入一个日子到单元格:

2、读取Excel文件的第二种方法

import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')

#pip install xlrd

#pip install openpyxl

xls_file=pd.ExcelFile('../data/Bank_Data.xlsx')

bankdata=xls_file.parse('bankdata')

bankdata.head()

向单元格增多一个公式:

运作结果:

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 5) # Outputs 5
worksheet.write(0, 1, 2) # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])
workbook.save('Excel_Workbook.xls')

太阳集团太阳娱乐登录 7

向单元格增加四个超链接:

申明:ExcelFile用到了xlrd和openpyxl包,供给提前安装。

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) # Outputs the text "Google" linking to http://www.google.com
workbook.save('Excel_Workbook.xls')

使用Python做多少透视

合併列和行:

接下去还足以选取Python做多少透视:

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write_merge(0, 0, 0, 3, 'First Merge') # Merges row 0's columns 0 through 3.
font = xlwt.Font() # Create Font
font.bold = True # Set font to Bold
style = xlwt.XFStyle() # Create Style
style.font = font # Add Bold Font to Style
worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # Merges row 1 through 2's columns 0 through 3.
workbook.save('Excel_Workbook.xls')

譬喻说,想总计各类地方的不良贷款总额,则

安装单元格内容的对其方式:

import numpy as np
bank_res1=bankdata.pivot_table(index=['所属地区'],values=['不良贷款(亿元)'],aggfunc=np.sum)
bank_res1

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
alignment = xlwt.Alignment() # Create Alignment
alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style = xlwt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')

太阳集团太阳娱乐登录 8

为单元格议加多边框:

证实:以上用到numpy,所以进行了导入,必要先安装。

# Please note: While I was able to find these constants within the source code, on my system (using LibreOffice,) I was only presented with a solid line, varying from thin to thick; no dotted or dashed lines.
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
borders = xlwt.Borders() # Create Borders
borders.left = xlwt.Borders.DASHED 
    DASHED虚线
    NO_LINE没有
    THIN实线

# May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle() # Create Style
style.borders = borders # Add Borders to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')

想总计各类地点的不良贷款总额,及银行多少,则

为单元格设置背景观:

bank_res2=bankdata.pivot_table(index=['所属地区'],values=['不良贷款(亿元)','银行编号'],aggfunc={'不良贷款(亿元)':np.sum,'银行编号':np.count_nonzero})

bank_res2

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
pattern = xlwt.Pattern() # Create the Pattern
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save('Excel_Workbook.xls')

太阳集团太阳娱乐登录 9

将数据保存到Excel文件

终极,将透视结果保存到Excel,一行代码消除。

bank_res2.to_excel("bank_res2.xlsx")

在当前目录下,能够看见二个新的Excel文件

bank_res2.xlsx

,展开后得以看见如下结果:

太阳集团太阳娱乐登录 10

答应达成!

回答:

Python对Excel的操作自身第一用xlwt、xlrd、xlutils这多个库。

xlwt重要用来创立并写入数据到Excel。已经存在的表不得以写入。

以下使用Python写九九乘法表到Excel

太阳集团太阳娱乐登录 11

运维之后,代码文件所在的文件夹会多出二个”九九乘法表“的Excel,内容如下图:

太阳集团太阳娱乐登录 12

xlrd主要用来读取Excel的数目。

以下使用Python读取刚刚写入的九九乘法表。

太阳集团太阳娱乐登录 13

打字与印刷结果如下图:

太阳集团太阳娱乐登录 14

采取xlutils的copy函数来变相退换Excel的数量

合作xlrd库来退换

太阳集团太阳娱乐登录 15

运作之后,文件夹又多出一个”九九乘法表改版“的Excel表格。内容如下:

太阳集团太阳娱乐登录 16

回答:

python操作Exlcel主要一下三个库:

xlrd & xlwt & xlutils

xlrd肩负读取Excel文件,援救xls、xlsx

xlwt肩负写入Excel文件,只援救xls格式。对于当今曾经Office2019了,还只辅助二零零三版的格式难怪会被人放任。

xlutils是贰个工具模块,大家平时只用到copy模块,用于修改已存在的Excel文件

里头xlrd比较有利,借使学习的话,要等量齐观,人与人以内的回味和接受是有细小区别的。提出系统的对三个库全体把握一下,看是出于兴趣依旧专门的工作索要。祝你早日获得高人指引,争取达到人生巅峰。

回答:

谢谢诚邀!以下是答案 仅供参谋!

xlrd担任读取Excel文件,协理xls、xlsx;

xlwt担当写入Excel文件,只援救xls格式。

xlutils是一个工具模块,大家日常只用到copy模块,用于修改已存在的Excel文件

回答:

你问哪个轻便学,作者想说会哪个哪个就轻便

回答:

近来盛行的xlwings,和pyxll,前面一个的进程非常的慢,

本文由澳门太阳娱乐集团官网发布于软件下载,转载请注明出处:太阳集团太阳娱乐登录python3操作Excel openpyxl模块

上一篇:什么样学好excel技艺? 下一篇:没有了
猜你喜欢
热门排行
精彩图文