(整理)python操作excel.

合集下载

excel 中python用法

excel 中python用法

一、介绍Excel是一款广泛使用的电子表格软件,Python是一种流行的编程语言。

结合Excel和Python的使用可以提高数据处理的效率和灵活性。

本文将介绍在Excel中使用Python的方法和技巧。

二、Python插件安装1. 打开Excel并进入“文件”菜单。

2. 选择“选项”。

3. 在选项对话框中,选择“加载项”。

4. 点击“Excel加载项”下的“转到”按钮。

5. 在“添加-Ins”对话框中,点击“浏览”。

6. 找到并选择Python插件的安装文件,点击“打开”。

7. 完成安装并重启Excel。

三、使用Python进行数据处理1. 在Excel中新建一个工作表。

2. 在需要进行数据处理的单元格输入Python函数,例如“=Py.COUNTIF(A1:A10,">5")”。

3. 按下Enter键,Excel会调用Python插件执行该函数,并在单元格中显示结果。

四、Python函数示例1. 使用Python的COUNTIF函数统计大于5的数据个数。

2. 使用Python的SUM函数计算数据的总和。

3. 使用Python的AVERAGE函数计算数据的平均值。

4. 使用Python的IF函数进行条件判断。

5. 使用Python的VLOOKUP函数进行数据查找。

五、Python脚本执行1. 在Excel中打开一个工作表。

2. 点击“开发人员”选项卡。

3. 选择“插入”下的“ActiveX 控件”。

4. 在工作表中插入一个按钮控件,右键点击该按钮并选择“属性”。

5. 在“单击”事件中绑定Python脚本文件。

6. 点击按钮执行Python脚本,实现自定义的数据处理逻辑。

六、Python图表生成1. 在Excel中选择需要生成图表的数据范围。

2. 点击“插入”选项卡中的“插入统计图表”按钮。

3. 在弹出的对话框中选择“Python图表”。

4. 根据需要选择图表类型和样式,点击确定生成图表。

python in excel案例

python in excel案例

python in excel案例使用Python在Excel中进行数据处理是一种常见且高效的方法。

本文将列举10个Python在Excel中的应用案例,并对每个案例进行详细说明。

1. 数据清洗和转换在Excel中,经常需要对数据进行清洗和转换。

使用Python的pandas库,可以轻松地读取Excel文件,并进行数据清洗和转换。

例如,可以删除空白行、填充缺失值、删除重复数据,或者将数据转换为不同的格式。

2. 数据分析和可视化Python的pandas和matplotlib库提供了丰富的数据分析和可视化功能。

可以使用pandas读取Excel文件中的数据,然后使用matplotlib绘制各种图表,如折线图、柱状图、散点图等,以帮助我们更好地理解数据。

3. 数据合并和拆分有时候,我们需要将多个Excel文件中的数据合并成一个文件,或者将一个文件中的数据拆分成多个文件。

使用Python的pandas 库,可以很容易地实现这些操作。

可以通过读取多个Excel文件,并将它们合并为一个数据框,或者通过拆分数据框的方式将数据保存为多个Excel文件。

4. 数据筛选和排序在Excel中,可以使用筛选和排序功能来选择特定的数据或按照特定的条件对数据进行排序。

使用Python的pandas库,可以使用条件语句和排序函数对数据进行筛选和排序。

可以根据自己的需求,使用不同的条件和排序方式来处理数据。

5. 数据透视表Excel中的数据透视表功能可以帮助我们对数据进行汇总和分析。

使用Python的pandas库,可以使用pivot_table函数来实现类似的功能。

可以根据需要选择不同的行、列和值来生成透视表,并对透视表进行进一步的分析和处理。

6. 数据提取和转换有时候,我们需要从Excel文件中提取特定的数据,并将其转换为其他格式。

使用Python的xlrd和xlwt库,可以读取和写入Excel 文件,并对其中的数据进行提取和转换。

Python对Excel操作用法详解

Python对Excel操作用法详解

Python对Excel操作⽤法详解在python中,对excel表格读,写,追加数据,⽤以下三个模块:1、xlrd 读取excel表中的数据2、xlwt 创建⼀个全新的excel⽂件,然后对这个⽂件进⾏写⼊内容以及保存。

3、xlutils 读⼊⼀个excel⽂件,然后进⾏修改或追加,不能操作xlsx,只能操作xls。

⼀、读excel表读excel要⽤到xlrd模块1、导⼊模块 import xlrd2、打开excel⽂件table = data.sheets()[0] #通过索引顺序获取table = data.sheet_by_index(0) #通过索引顺序获取table = data.sheet_by_name(u'Sheet1')#通过名称获取代码如下:import xlrddata = xlrd.open_workbook(r"C:\Users\907968\Desktop\test.xlsx")table1 = data.sheets()[0]table2 = data.sheet_by_index(0)table3=data.sheet_by_name(u'Sheet1')print(table1)print(table2)print(table3)返回:<xlrd.sheet.Sheet object at 0x0000000002F7F208><xlrd.sheet.Sheet object at 0x0000000002F7F208><xlrd.sheet.Sheet object at 0x0000000002F7F208>3、获取⾏数和列数import xlrddata = xlrd.open_workbook(r"C:\Users\907968\Desktop\test.xlsx")table = data.sheets()[0]nrows = table.nrowsncols = table.ncolsprint("⾏数:%d\n列数:%d"%(nrows,ncols))返回:⾏数:13列数:34、获取整⾏和整列的值,以列表形式返回rows = table.row_values(0)cols = table.col_values(0)print("rows:%s\ncols:%s"%(rows,cols))返回:rows:['A1', 'B1', 'C1']cols:['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10', 'A11', 'A12', 'A13']5、获取单元格数据cell_A1 = table.cell_value(0,0)cell_C4 = table.cell_value(3,2)print("A1:%s\nC4:%s"%(cell_A1,cell_C4))返回:A1:A1C4:C4还可以使⽤⾏列索引来获取单元格数据cell_A1 = table.row(0)[0].valuecell_C4 = table.col(2)[3].valueprint("A1:%s\nC4:%s"%(cell_A1,cell_C4))返回:A1:A1C4:C4三、写excel操作1、导⼊:import xlwt2、创建workbookworkbook = xlwt.Workbook(encoding='utf-8', style_compression=0)encoding:设置字符编码,⼀般要这样设置:w = Workbook(encoding=’utf-8’),就可以在excel中输出中⽂了。

python处理excel文件(xls和xlsx)

python处理excel文件(xls和xlsx)

python处理excel⽂件(xls和xlsx)⼀、xlrd和xlwt使⽤之前需要先安装,windows上如果直接在cmd中运⾏python则需要先执⾏pip3 install xlrd和pip3 install xlwt,如果使⽤pycharm则需要在项⽬的解释器中安装这两个模块,File-Settings-Project:layout-Project Interpreter,点击右侧界⾯的+号,然后搜索xlrd和xlwt,然后点击Install Package进⾏安装。

对于excel来说,整个excel⽂件称为⼯作簿,⼯作簿中的每个页称为⼯作表,⼯作表⼜由单元格组成。

对于xlrd和xlwt,⾏数和列数从0开始,单元格的⾏和列也从0开始,例如sheet.row_values(2)表⽰第三⾏的内容,sheet.cell(1,2).value表⽰第⼆⾏第三列单元格的内容。

1.xlrd模块读取excel⽂件使⽤xlrd模块之前需要先导⼊import xlrd,xlrd模块既可读取xls⽂件也可读取xlsx⽂件。

获取⼯作簿对象:book = xlrd.open_workbook('excel⽂件名称')获取所有⼯作表名称:names = book.sheet_names(),结果为列表根据索引获取⼯作表对象:sheet = book.sheet_by_index(i)根据名称获取⼯作表对象:sheet = book.sheet_by_name('⼯作表名称')获取⼯作表⾏数:rows = sheet.nrows获取⼯作表列数:cols = sheet.ncols获取⼯作表某⼀⾏的内容:row = sheet.row_values(i) ,结果为列表【sheet.row(i),列表】获取⼯作表某⼀列的内容:col = sheet.col_values(i) 结果为列表【sheet.col(i),列表】获取⼯作表某⼀单元格的内容:cell = sheet.cell_value(m,n)、 sheet.cell(m,n).value、sheet.row(m)[n].value,sheet.col(n)[m].value,结果为字符串或数值【sheet.cell(0,0),xlrd.sheet.Cell对象】⽰例:假设在py执⾏⽂件同层⽬录下有⼀fruit.xls⽂件,有三个sheet页Sheet1、Sheet2、Sheet3,其中Sheet1内容如下:import xlrdbook = xlrd.open_workbook('fruit.xls')print('sheet页名称:',book.sheet_names())sheet = book.sheet_by_index(0)rows = sheet.nrowscols = sheet.ncolsprint('该⼯作表有%d⾏,%d列.'%(rows,cols))print('第三⾏内容为:',sheet.row_values(2))print('第⼆列内容为%s,数据类型为%s.'%(sheet.col_values(1),type(sheet.col_values(1))))print('第⼆列内容为%s,数据类型为%s.'%(sheet.col(1),type(sheet.col(1))))print('第⼆⾏第⼆列的单元格内容为:',sheet.cell_value(1,1))print('第三⾏第⼆列的单元格内容为:',sheet.cell(2,1).value)print('第五⾏第三列的单元格内容为:',sheet.row(4)[2].value)print('第五⾏第三列的单元格内容为%s,数据类型为%s'%(sheet.col(2)[4].value,type(sheet.col(2)[4].value)))print('第五⾏第三列的单元格内容为%s,数据类型为%s'%(sheet.col(2)[4],type(sheet.col(2)[4])))# 执⾏结果# sheet页名称: ['Sheet1', 'Sheet2', 'Sheet3']# 该⼯作表有5⾏,3列.# 第三⾏内容为: ['梨', 3.5, 130.0]# 第⼆列内容为['单价/元', 8.0, 3.5, 4.5, 3.8],数据类型为<class 'list'>.# 第⼆列内容为[text:'单价/元', number:8.0, number:3.5, number:4.5, number:3.8],数据类型为<class 'list'>.# 第⼆⾏第⼆列的单元格内容为: 8.0# 第三⾏第⼆列的单元格内容为: 3.5# 第五⾏第三列的单元格内容为: 300.0# 第五⾏第三列的单元格内容为300.0,数据类型为<class 'float'># 第五⾏第三列的单元格内容为number:300.0,数据类型为<class 'xlrd.sheet.Cell'>xlrd读取excel⽰例可以看出通过sheet.row(i)、sheet.col(i)也可获取⾏或列的内容,并且结果也是⼀个列表,但是列表中的每⼀项类似字典的键值对,形式为数据类型:值。

python excel合并单元格填充方案 -回复

python excel合并单元格填充方案 -回复

python excel合并单元格填充方案-回复PythonExcel合并单元格填充方案在处理Excel表格数据时,经常会遇到需要合并单元格并填充内容的需求。

Python作为一种强大的编程语言,提供了丰富的库和工具,可以轻松应对这种需求。

本文将介绍一种基于Python的Excel合并单元格填充的方案,以帮助读者更好地理解和应用相关知识。

第一步:准备工作在开始实现Excel合并单元格填充方案之前,我们需要事先安装`openpyxl`库。

`openpyxl`是一个用于读写Excel文件的Python库,具有丰富的功能和易于使用的API接口。

可以通过以下命令安装`openpyxl`库:pip install openpyxl第二步:读取Excel文件在进行合并单元格填充之前,我们首先需要读取已有的Excel文件。

假设我们要处理的Excel文件名为`data.xlsx`,文件中包含一个名为`Sheet1`的工作表。

可以使用`openpyxl`库提供的`load_workbook`函数来读取Excel文件,具体代码如下:pythonfrom openpyxl import load_workbook# 读取Excel文件workbook = load_workbook(filename='data.xlsx')# 获取指定工作表sheet = workbook['Sheet1']第三步:合并单元格在已经读取Excel文件的基础上,我们可以使用`openpyxl`库提供的`merge_cells`函数来合并单元格。

该函数需要指定要合并的单元格范围,合并范围使用Excel的表示方法,例如`A1:B2`。

具体代码如下:pythonfrom openpyxl import load_workbookfrom openpyxl.utils import get_column_letter# 读取Excel文件workbook = load_workbook(filename='data.xlsx')# 获取指定工作表sheet = workbook['Sheet1']def merge_cells(start_row, start_column, end_row, end_column): start_cell = get_column_letter(start_column) + str(start_row) end_cell = get_column_letter(end_column) + str(end_row)sheet.merge_cells(start_cell + ":" + end_cell)# 合并A1到B2的单元格merge_cells(1, 1, 2, 2)第四步:填充内容在合并单元格之后,我们可以使用`openpyxl`库提供的`cell`属性来填充内容。

python excel解析

python excel解析

python excel解析Python是一门强大的编程语言,它可以与多种文件格式交互,包括Microsoft Excel。

利用Python语言,我们可以读取、处理和创建Excel文件,以及从Excel文件中提取有用的信息。

在Python中,我们可以使用第三方库——openpyxl来操作Excel文件。

openpyxl可以读取和写入Excel文件中的数据、格式和图表,也可以创建新的Excel文件。

下面是一些openpyxl库所支持的操作:1. 读取Excel文件要读取Excel文件,我们需要使用openpyxl库中的load_workbook 函数。

load_workbook函数将Excel文件作为输入,并返回一个Workbook对象,该对象包含Excel文件中的所有工作表。

2. 读取工作表一旦我们加载了Excel文件,我们就可以通过名字或索引访问其中的工作表。

我们可以使用Worksheet对象中的cell函数读取单元格中的数据,或使用iter_rows函数读取整个工作表中的行。

3. 写入Excel文件要写入Excel文件,我们需要使用Workbook对象的create_sheet函数创建新的工作表。

我们可以使用Worksheet对象中的cell函数写入单元格中的数据,或使用append函数向工作表中添加新行。

4. 格式化Excel文件我们可以使用openpyxl库中的各种函数和属性来格式化Excel文件。

例如,我们可以设置列宽、行高、单元格字体、颜色和边框等。

5. 创建图表使用openpyxl库,我们可以创建各种类型的图表,例如线图、柱状图、饼图等。

我们可以使用Chart对象中的各种函数和属性来设置图表的大小、数据系列、颜色等。

总之,利用Python和openpyxl库可以轻松地操作Excel文件。

无论是读取数据、处理数据还是创建新的Excel文件,Python都可以成为您的得力助手。

python excel数据处理案例

python excel数据处理案例

Python使用pandas和openpyxl处理Excel数
据:基础案例
当然,Python有很多库可以用来处理Excel数据,其中最流行的是pandas和openpyxl。

下面是一个简单的案例,使用这两个库来读取、处理和写入Excel数据。

首先,确保你已经安装了这两个库。

如果没有,你可以使用pip来安装:pip install pandas openpyxl
以下是处理Excel数据的步骤:
1.导入库
2.读取Excel文件
3.处理数据
4.将结果写入新的Excel文件
这是一个具体的例子:
import pandas as pd
# 读取Excel文件
df = pd.read_excel('input.xlsx')
# 显示前5行数据以查看数据结构
print(df.head())
# 数据处理 - 这里我们只是简单地将所有数字加1
df = df + 1
# 将结果写入新的Excel文件
df.to_excel('output.xlsx', index=False)
在这个例子中,我们只是简单地将所有数字加1。

在实际的数据处理中,你可能会进行更复杂的操作,比如筛选特定行、过滤特定列、执行计算等。

你可以查阅pandas的文档以获取更多关于如何使用这个库的信息。

Python处理Excel效率高十倍(下篇)通篇硬干货,再也不用加班啦

Python处理Excel效率高十倍(下篇)通篇硬干货,再也不用加班啦

Python处理Excel效率高十倍(下篇)通篇硬干货,再也不用加班啦《用Python处理Excel表格》下篇来啦!身为工作党或学生党的你,平日里肯定少不了与Excel表格打交道的机会。

当你用Excel处理较多数据时,还在使用最原始的人工操作吗?现在教你如何用Python处理Excel,从此处理表格再也不加班,时间缩短数十倍!上篇我们进行了一些事前准备,目的是用Python提取Excel表中的数据。

而这一篇便是在获取数据的基础上,对Excel表格的实操处理。

操作创建新的excel第9行代码用来指定创建的excel的活动表的名字:·不写第9行,默认创建sheet·写了第9行,创建指定名字的sheet表import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.Workbook()sheet = workbook.activesheet.title = '1号sheet'workbook.save('1.xlsx') 修改单元格、excel另存为第9行代码,通过给单元格重新赋值,来修改单元格的值第9行代码的另一种写法sheet['B1'].value = 'age'第10行代码,保存时如果使用原来的(第7行)名字,就直接保存;如果使用了别的名字,就会另存为一个新文件import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表sheet['A1'] = 'name'workbook.save('test.xlsx')添加数据插入有效数据使用append()方法,在原来数据的后面,按行插入数据import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))data = [ ['素子',23], ['巴特',24], ['塔奇克马',2]]for row in data: sheet.append(row) # 使用append 插入数据workbook.save('test.xlsx')插入空行空列·insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的下方插入·insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的左侧插入import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))sheet.insert_rows(idx=3, amount=2)sheet.insert_cols(idx=2,amount=1)workbook.save('test.xlsx')删除行、列·delete_rows(idx=数字编号, amount=要删除的行数)·delete_cols(idx=数字编号, amount=要删除的列数)import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))sheet.delete_rows(idx=10) # 删除第10行sheet.delete_cols(idx=1, amount=2) # 删除第1列,及往右共2列workbook.save('test.xlsx')移动指定区间的单元格(move_range)move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上import osimport openpyxlpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))sheet.move_range('D11:F12',rows=0,cols=-3) # 移动D11到F12构成的矩形格子workbook.save('test.xlsx')字母列号与数字列号之间的转换核心代码from openpyxl.utils import get_column_letter, column_index_from_string# 根据列的数字返回字母print(get_column_letter(2)) # B# 根据字母返回列的数字print(column_index_from_string('D')) # 4举个例子:import osimport openpyxlfrom openpyxl.utils import get_column_letter, column_index_from_stringpath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('2.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))# 根据列的数字返回字母print(get_column_letter(2)) # B# 根据字母返回列的数字print(column_index_from_string('D')) # 4字体样式查看字体样式import osimport openpyxlimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:'+str(sheet))cell = sheet['A1']font = cell.fontprint('当前单元格的字体样式是')print(, font.size, font.bold, font.italic, font.color)'''当前活动表是:<Worksheet '1号sheet'>当前单元格的字体样式是等线11.0 False False <openpyxl.styles.colors.Color object>Parameters:rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme'''' 修改字体样式openpyxl.styles.Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)其中,字体颜色中的color是RGB的16进制表示import osimport openpyxlimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print(sheet)cell = sheet['A1']cell.font = openpyxl.styles.Font(name='微软雅黑', size=20, bold=True, italic=True, color='FF0000')workbook.save('test.xlsx')再者,可以使用for循环,修改多行多列的数据,在这里介绍了获取的方法import osimport openpyxlimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print(sheet)cell = sheet['A']for i in cell: i.font = openpyxl.styles.Font(name='微软雅黑', size=20, bold=True, italic=True, color='FF0000')workbook.save('test.xlsx')设置对齐格式Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)水平对齐:'distributed’,'justif y’,'center’,'left’,'centerContinuous’,'right,'general’垂直对齐:'bottom’,'distributed’,'justify’,'center’,'top’import osimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))cell = sheet['A1']alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center', text_rotation=0, wrap_text=True)cell.alignment = alignmentworkbook.save('test.xlsx')当然,你仍旧可以调用for循环来实现对多行多列的操作import osimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))cell = sheet['A']alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center',text_rotation=0, wrap_text=True)for i in cell: i.alignment = alignment workbook.save('test.xlsx')设置行高列宽设置行列的宽高:·row_dimensions[行编号].height = 行高·column_dimensions[列编号].width = 列宽import osimport openpyxlimport openpyxl.stylespath = r'C:\Users\asuka\Desktop'os.chdir(path) # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值sheet = workbook.active # 获取活动表print('当前活动表是:' + str(sheet))# 设置第1行的高度sheet.row_dimensions[1].height = 50# 设置B列的卷度sheet.column_dimensions['B'].width = 20workbook.save('test.xlsx')设置所有单元格(显示的结果是设置所有,有数据的单元格的)from openpyxl import load_workbookfrom openpyxl.utils import get_column_letterimport osos.chdir(r'C:\Users\asuka\Desktop')workbook = load_workbook('1.xlsx')print(workbook.sheetnames) # 打印所有的sheet表ws = workbook[workbook.sheetnames[0]] # 选中最左侧的sheet表width = 2.0 # 设置宽度height = width * (2.2862 / 0.3612) # 设置高度print('row:', ws.max_row, 'column:', ws.max_column) # 打印行数,列数for i in range(1, ws.max_row + 1): ws.row_dimensions[i].height = heightfor i in range(1, ws.max_column + 1): ws.column_dimensions[get_column_letter(i)].width = widthworkbook.save('test.xlsx')合并、拆分单元格合并单元格有下面两种方法,需要注意的是,如果要合并的格子中有数据,即便python没有报错,Excel打开的时候也会报错。

python处理excel实例

python处理excel实例

python处理excel实例Python是一种强大的编程语言,可以用于各种各样的任务,包括数据处理。

Excel是一个广泛使用的电子表格应用程序,用于处理和管理数据。

Python可以与Excel相结合,提供更高效和灵活的数据处理方式。

下面是一些Python处理Excel的实例:1.读取Excel文件: Python可以使用pandas包中的read_excel 函数读取Excel文件。

下面是一个简单的读取Excel文件的代码示例: import pandas as pd#读取Excel文件data = pd.read_excel('file.xlsx')print(data)2.写入Excel文件: Python也可以使用pandas包中的to_excel 函数将数据写入Excel文件。

下面是一个简单的写入Excel文件的代码示例:import pandas as pd#创建数据data = {'姓名': ['张三', '李四', '王五'], '年龄': [20, 25, 30]}#将数据转换为DataFrame格式df = pd.DataFrame(data)#将DataFrame写入Excel文件df.to_excel('file.xlsx', index=False)3.修改Excel文件: Python可以使用openpyxl包中的load_workbook函数打开Excel文件,并使用它的方法修改文件。

下面是一个简单的修改Excel文件的代码示例:from openpyxl import load_workbook#加载Excel文件wb = load_workbook('file.xlsx')#获取工作表ws = wb.active#修改单元格ws['A1'] = '姓名'ws['B1'] = '年龄'#保存文件wb.save('file.xlsx')这些实例只是Python处理Excel的基础知识,还有很多其他的功能和技巧可以使用。

python excel的读写

python excel的读写

python excel的读写Python是一种功能强大的编程语言,可以用于处理各种类型的数据。

在数据处理中,Excel是一种常用的工具,因此,Python提供了许多库和模块,用于读写Excel文件。

本文将介绍如何使用Python 进行Excel的读写操作。

我们需要安装一个Python库,用于处理Excel文件。

最常用的库是`openpyxl`,它提供了许多功能,包括读取和写入Excel文件。

要安装`openpyxl`库,可以使用以下命令:```pip install openpyxl```安装完成后,我们就可以开始读取和写入Excel文件了。

我们来看看如何读取Excel文件。

假设我们有一个名为`data.xlsx`的Excel文件,其中包含了一些数据。

我们可以使用以下代码来读取该文件:```pythonimport openpyxl# 打开Excel文件workbook = openpyxl.load_workbook('data.xlsx')# 选择第一个工作表sheet = workbook.active# 遍历工作表中的每一行for row in sheet.iter_rows():# 遍历每一行中的每一列for cell in row:# 输出单元格的值print(cell.value)```上述代码中,我们首先使用`load_workbook()`函数打开Excel文件。

然后,我们选择第一个工作表,并使用`iter_rows()`方法遍历工作表中的每一行。

在内部循环中,我们遍历每一行中的每一列,并输出单元格的值。

接下来,我们来看看如何写入Excel文件。

假设我们有一些数据,我们想要将其写入到一个名为`output.xlsx`的Excel文件中。

我们可以使用以下代码来实现:```pythonimport openpyxl# 创建一个新的工作簿workbook = openpyxl.Workbook()# 创建一个新的工作表sheet = workbook.active# 将数据写入工作表data = [['姓名', '年龄', '性别'],['张三', 18, '男'],['李四', 20, '女'],['王五', 22, '男']]for row in data:sheet.append(row)# 保存工作簿workbook.save('output.xlsx')```上述代码中,我们首先创建一个新的工作簿,并使用`active`属性选择第一个工作表。

python处理excel实例

python处理excel实例

python处理excel实例Python是一种功能强大的编程语言,可以用来处理各种数据类型,包括Excel文件。

Python处理Excel文件的能力极强,可以进行数据提取、数据处理、数据分析等多方面操作。

下面是一个Python处理Excel文件的实例:1. 导入所需的库```pythonimport openpyxl```2. 读取Excel文件```pythonwb = openpyxl.load_workbook('example.xlsx')```这个代码块会打开名为example.xlsx的Excel文件,并将其存储在变量wb中。

3. 选择工作表```pythonsheet = wb['Sheet1']```这个代码块会选择名为Sheet1的工作表,并将其存储在变量sheet中。

4. 读取单元格数据cell_value = sheet['A1'].value```这个代码块会读取A1单元格的数据,并将其存储在变量cell_value中。

5. 读取行数据```pythonrow_values = []for row in sheet.iter_rows(min_row=2, max_col=3):row_values.append([cell.value for cell in row])```这个代码块会读取工作表中第2行到最后一行、第1列到第3列的数据,并将其存储在列表row_values中。

6. 读取列数据```pythoncolumn_values = []for column in sheet.iter_cols(min_row=2, max_row=4):column_values.append([cell.value for cell in column]) ```这个代码块会读取工作表中第2列到第4列、第1行到最后一行的数据,并将其存储在列表column_values中。

python关于操作表格的命令

python关于操作表格的命令

python关于操作表格的命令在 Python 中,有几个库可以用来操作表格数据。

其中一些常用的包括 Pandas、Openpyxl(用于 Excel 文件)、CSV 模块等。

以下是一些基本的表格操作命令:Pandas 库Pandas 是一个强大的数据分析库,可用于处理和分析表格数据。

安装 Pandas:pip install pandas导入 Pandas:import pandas as pd读取表格数据:# 从 CSV 文件读取df = pd.read_csv('example.csv')# 从 Excel 文件读取df = pd.read_excel('example.xlsx')显示数据:# 显示前几行数据print(df.head())选择列:# 选择单列column_data = df['ColumnName']# 选择多列columns_data = df[['Column1', 'Column2']]过滤数据:# 过滤数据filtered_data = df[df['Column'] > 10]添加列:df['NewColumn'] = df['Column1'] + df['Column2']保存数据:# 保存为 CSV 文件df.to_csv('new_data.csv', index=False)# 保存为 Excel 文件df.to_excel('new_data.xlsx', index=False)CSV 模块如果你处理的是简单的 CSV 文件,你也可以使用 Python 内置的 CSV 模块。

import csv# 读取 CSV 文件with open('example.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)Openpyxl 库如果你处理的是Excel 文件,可以使用Openpyxl 来读写Excel 文件。

python对excel文件的处理

python对excel文件的处理

python对excel⽂件的处理python处理excel⽂件有很多⽅法,最开始接触的是xlrd、xlsxwriter模块,分别⽤于excel⽂件的读、写。

后来⼜学习了openpyxl模块,可以同时完成excel⽂件的读、写。

再后来,接触了⼤⽜pandas,这是python中专门⽤于数据分析的模块,有更加强⼤的功能。

本⽂尝试梳理⼀下这⼏个⽅法,以实际案例来对⽐各种⽅法的优劣。

1. xlrd、xlsxwriter模块1import xlrd #读取excel⽂件2import xlsxwriter #写⼊excel⽂件3 file_name = r'C:/2020/python-exer/excel_doc/time_fmt.xls' #存在⼀个excel⽂件,⽤于读4 file_name1 = r'C:/2020/python-exer/excel_doc/time_fmt_output.xls' #新建⼀个excel⽂件,⽤于写5# 读取excel⽂件,按⾏读取数据,每⾏数据对应⼀个列表元素6def excel_lines():7 wb = xlrd.open_workbook(file_name)8# 打开Excel⽂件9 sheet1 = wb.sheet_by_name('Sheet1') # 通过excel表格sheet名称获取⼯作表10 dat = [] # 创建空list11 Max_lines = sheet1.nrows # sheet1数据最⼤⾏数,即便每列元素不同。

12print(Max_lines)13for a in range(Max_lines):14 cells = sheet1.row_values(a) # 每⾏数据赋值给cells15 dat.append(cells)16return datView Code#>>>[['序号', '时间格式定义'], [1.0, '%a Locale’s abbreviated weekday name. '],[2.0, '%A Locale’s full weekday name. '],……从输出内容看出,得到的是⼀个嵌套list,每⾏数据对应着⼀个list元素。

使用Python处理excel表格(openpyxl)教程

使用Python处理excel表格(openpyxl)教程

使⽤Python处理excel表格(openpyxl)教程现在有个⼩任务,需要处理excel中的数据。

其实就是简单的筛选,excel玩的不熟练,⽽且需要处理的表有70多个,于是想着写个脚本处理⼀下吧。

python中的openpyxl包可以轻松实现读写excel⽂件,下⾯简单介绍⼀下过程。

1.安装openpyxl通过pip或者easy_install均可安装openpyxl。

openpyxl官⽹:https:///en/latest/安装命令:pip install openpyxl (在线安装)或者 easy_install openpyxl 即可。

2.使⽤openpyxl读xlsx加载workbook,注意,openpyxl只⽀持xlsx格式,⽼版的xls格式需要其他⽅法去加载。

wb = load_workbook(filename = r'tj.xlsx')获取每个sheet的名称sheetnames = wb.get_sheet_names()获得第⼀个sheetws = wb.get_sheet_by_name(sheetnames[0])获取⼀个单元格的数据c = ws['A4']或者c = ws.cell('A4')或者d = ws.cell(row = 4, column = 2)⼀次获取多个单元格的数据cell_range = ws['A1':'C2']或者tuple(ws.iter_rows('A1:C2'))或者1. for row in ws.iter_rows('A1:C2'):2. for cell in row:3. <span style='white-space:pre'> </span>print cell或者1. data_dic = []2.3. for rx in range(0,ws.get_highest_row()):4.5. temp_list = []6. money = ws.cell(row = rx,column = 1).value7. kind = ws.cell(row = rx,column = 2).value8.9. temp_list = [money , kind]10. #print temp_list11.12. data_dic.append(temp_list)13.14. for l in data_dic:15. print l[0],l[1]3.写⼊xlsx⽐如数据存在上边定义的data_dic中1. out_filename = r'result.xlsx'2.3. outwb = Workbook()4.5. ew = ExcelWriter(workbook = outwb)6.7. ws = outwb.worksheets[0]8.9. ws.title = 'res'9. ws.title = 'res'10.11. i=112. for data_l in data_dic:13. for x in range(0,len(data_l)):14. #col = get_column_letter(x)15. ws.cell(column = x+1 , row = i , value = '%s' % data_l[x])16. i+=117.18. ew.save(filename = out_filename)再增加⼀个sheet写内容1. ws2 = outwb.create_sheet(title = 's2')2.3. for data_l in data_dic:4. for x in range(0,len(data_l)):5. ws2.cell(column = x+1 , row = i , value = '%s' % data_l[x])6. i+=17.8. ew.save(filename = out_filename)4.中⽂编码问题表格中的值,openpyxl会⾃动转换为不同的类型,有些表格中会有中⽂出现,就需要进⾏相应的转码。

Python文件操作(读写Excel)

Python文件操作(读写Excel)

Python⽂件操作(读写Excel)⽂件读写Excel1.使⽤xlrd读取excel#使⽤xlrd读取excel#1.导⼊模块import xlrd# 2. 使⽤xlrd的函数打开本地⽂件workbook=xlrd.open_workbook('案例.xlsx')#3. 获取⼯作表# sheets=workbook.sheets()#获取所有⼯作表组成list,具体某个表⽤下标# sheetOne=sheets[0]# sheetOne=workbook.sheet_by_index(0)#使⽤函数通过int 获取第⼏张# 返回⼯作表名称组成的列表sheetNames=workbook.sheet_names()sheetOne=workbook.sheet_by_name(sheetNames[0])# ⾏数row=sheetOne.nrows# 列数col=sheetOne.ncols# ⽤for遍历⾏数,输出每⾏for i in range(row):each_row=sheetOne.row_values(i)print(each_row)# ⽤for 遍历列数,输出每列for i in range(col):each_col=sheetOne.col_values(i)print(each_col)# 精确到单元格# 尝试输出第⼆⾏,第⼆列的值,读取列表的⽅式print(sheetOne.row_values(1)[1])# sheetOne.cell(row,col) 获取单元格# 单元格.value 是值# sheetOne.cell_value(row,col)直接返回值print(sheetOne.cell(8,1).value)print(sheetOne.cell_value(8,1))# ⽤循环输出所有单元格的内容# ⽅法⼀# for i in range(row):# eachrow=sheetOne.row_values(i)# for each in eachrow:# print(each)# ⽅法⼆for i in range(row):for j in range(col):print(sheetOne.cell_value(i,j))2.使⽤xlwt模块写⼊excel # 导⼊xlwt模块import xlwt# 创建⼯作簿wb=xlwt.Workbook()#创建⼯作表sheet=wb.add_sheet('newSheet')for i in range(1,10):for j in range(1,i+1):sheet.write(i,j-1,str(j)+'x'+str(i)+'='+str(i*j)) # 保存⽂件wb.save('newExcel.xls')3.使⽤xlutils模块修改excel# 使⽤xlutils模块修改 excelimport xlrdfrom xlutils.copy import copy# xlrd 读取⼯作簿wb=xlrd.open_workbook('案例.xlsx')# 复制⼀份⼯作簿,⽤来写⼊copyed=copy(wb)# 获取复制来的⼯作簿的⼯作表sheetOne=copyed.get_sheet(0)# 使⽤writr()写⼊sheetOne.write(3,0,'我是更改的内容')# 保存,如果保存的⽂件名存在则覆盖,不存在则保存个新的copyed.save('new新存的.xls')4.使⽤openpyxl操作excel#使⽤openpyxl操作excelfrom openpyxl import Workbook# 1. 实例化对象,创建⼯作簿wb=Workbook()# 2. 使⽤第⼀张⼯作表sheet=wb.active# 3. 给表取个名字sheet.title='表的名称1'# 4. 给表增加内容:sheet.append(list类型)sheet.append([1,2,3])# 5.保存⼯作簿wb.save('new1.xlsx')5.⼯作簿属性与⽅法from openpyxl import Workbook # 创建新的⼯作簿from openpyxl import load_workbook # 打开已有⼯作簿# wb = load_workbook('new1.xls') 打开不了 xls 的⽂件wb = load_workbook('F:\Python资料\data.xlsx')'''workbook 的属性:workbook.sheetnames : 所有⼯作表的名字组成的列表workbook.worksheets : 所有⼯作表组成的列表workbook.active : 默认的⼯作表(第⼀张)workbook 的⽅法:workbook.get_sheet_names() : 同 workbook.sheetnamesworkbook.get_active_sheet() : 同 workbook.activeworkbook.get_sheet_by_name(name): 根据name获取 sheetworkbook.create_sheet(sheetname,index) : 创建sheet,以及名称与index位置workbook.save(filename) : 保存'''sheet = wb.create_sheet('新的',2)sheet.append([1,2,3])wb.save('data.xlsx')6.⼯作表属性与⽅法(上)from openpyxl import load_workbookwb = load_workbook('data.xlsx')# 获取表格 wb[ 'sheetname' ]sheet = wb['新的']'''⼯作表的属性:sheet.rows :⾏数对象sheet.columns :列数对象sheet.max_row :有效的最⼤⾏数sheet.min_row :有效的最⼩⾏数sheet.max_column:有效的最⼤列数sheet.min_column:有效的最⼩列数sheet.values :所有单元格的值组成的2维列表。

利用python对excel中的特定数据提取并写入新表的方法

利用python对excel中的特定数据提取并写入新表的方法

利用python对excel中的特定数据提取并写入新表的方法一、引言在实际工作中,我们常常需要利用Python对Excel文件中的特定数据进行提取,并将其写入新的表格。

本文将详细介绍如何利用Python实现这一目的,从而提高数据处理的效率。

二、Python提取Excel数据库方法1.安装库要处理Excel文件,我们需要安装python-openpyxl库。

在命令行中输入以下命令进行安装:```pip install openpyxl```2.读取Excel文件首先,我们需要导入openpyxl库,并使用openpyxl.load_workbook()函数读取Excel文件。

```pythonimport openpyxl# 读取Excel文件workbook = openpyxl.load_workbook("example.xlsx")```3.提取特定数据接下来,我们需要根据需求提取Excel文件中的特定数据。

以下是一个简单的示例,提取A1单元格的值:```python# 提取A1单元格数据cell_value = workbook["Sheet1"].cell(1, 1).value```三、将提取的数据写入新表1.创建新表结构首先,我们需要创建一个新的Excel文件,并设置新表的结构。

以下代码示例创建了一个包含3列的新表:```python# 创建新表ew_workbook = workbook.copy(title="New Sheet")# 获取新表ew_sheet = new_workbook["New Sheet"]# 设置新表列宽for col in range(1, 4):new_sheet["A" + str(col)].column_width = 10```2.写入数据接下来,我们将提取的特定数据写入新表。

python表格处理方法

python表格处理方法

Python中处理表格数据的方法有很多,以下是其中一些常用的方法:
1.Pandas库:Pandas是Python中一个强大的数据处理库,它可以轻松地读写和处理表格数据。

使用Pandas,您可以方便地对表格进行各种操作,例如筛选、排序、分组聚合等。

2.Numpy库:Numpy是Python中用于数值计算的库,它也可以用来处理表格数据。

通过Numpy,您可以方便地读写CSV文件、Excel文件等格式的表格数据。

3.Openpyxl库:如果您需要处理Excel表格数据,可以使用Openpyxl库。

这个库可以读取、写入Excel文件,并且支持对单元格进行各种操作,例如设置单元格格式、计算公式等。

4.XlsxWriter库:XlsxWriter是一个用于将数据写入Excel文件的Python库。

使用XlsxWriter,您可以轻松地将数据写入Excel文件,并且可以设置单元格格式、插入图像等。

5.CSV模块:CSV模块是Python中用于读写CSV文件的模块。

通过CSV模块,您可以方便地读写CSV文件,并且可以对数据进行各种操作,例如筛选、排序等。

以上是一些常用的Python表格处理方法,具体使用哪种方法取决于您的需求和数据格式。

python操作Excel的5种方式

python操作Excel的5种方式

python操作Excel的5种⽅式Python对Excel的读写主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter⼏种。

1.xlrd主要是⽤来读取excel⽂件import xlrddata = xlrd.open_workbook('abcd.xls') # 打开xls⽂件table = data.sheets()[0] # 打开第⼀张表nrows = table.nrows # 获取表的⾏数for i in range(nrows): # 循环逐⾏打印if i == 0:# 跳过第⼀⾏continueprint (table.row_values(i)[:13]) # 取前⼗三列⽰例:#coding=utf-8########################################################filename:test_xlrd.py#author:defias#date:xxxx-xx-xx#function:读excel⽂件中的数据#######################################################import xlrd#打开⼀个workbookworkbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')#抓取所有sheet页的名称worksheets = workbook.sheet_names()print('worksheets is %s' %worksheets)#定位到sheet1worksheet1 = workbook.sheet_by_name(u'Sheet1')"""#通过索引顺序获取worksheet1 = workbook.sheets()[0]#或worksheet1 = workbook.sheet_by_index(0)""""""#遍历所有sheet对象for worksheet_name in worksheets:worksheet = workbook.sheet_by_name(worksheet_name)"""#遍历sheet1中所有⾏rownum_rows = worksheet1.nrowsfor curr_row in range(num_rows):row = worksheet1.row_values(curr_row)print('row%s is %s' %(curr_row,row))#遍历sheet1中所有列colnum_cols = worksheet1.ncolsfor curr_col in range(num_cols):col = worksheet1.col_values(curr_col)print('col%s is %s' %(curr_col,col))#遍历sheet1中所有单元格cellfor rown in range(num_rows):for coln in range(num_cols):cell = worksheet1.cell_value(rown,coln)print cell"""#其他写法:cell = worksheet1.cell(rown,coln).valueprint cell#或cell = worksheet1.row(rown)[coln].valueprint cell#或cell = worksheet1.col(coln)[rown].valueprint cell#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorcell_type = worksheet1.cell_type(rown,coln)print cell_type"""2.xlwt主要是⽤来写excel⽂件#Python学习交流群:778463939import xlwtwbk = xlwt.Workbook()sheet = wbk.add_sheet('sheet 1')sheet.write(0,1,'test text')#第0⾏第⼀列写⼊内容wbk.save('test.xls')3.xlutils结合xlrd可以达到修改excel⽂件⽬的import xlrdfrom xlutils.copy import copyworkbook = xlrd.open_workbook(u'有趣装逼每⽇数据及趋势.xls')workbooknew = copy(workbook)ws = workbooknew.get_sheet(0)ws.write(3, 0, 'changed!')workbooknew.save(u'有趣装逼每⽇数据及趋势copy.xls')4.openpyxl可以对excel⽂件进⾏读写操作from openpyxl import Workbookfrom openpyxl import load_workbookfrom openpyxl.writer.excel import ExcelWriterworkbook_ = load_workbook(u"新歌检索失败1477881109469.xlsx") sheetnames =workbook_.get_sheet_names() #获得表单名字print sheetnamessheet = workbook_.get_sheet_by_name(sheetnames[0])print sheet.cell(row=3,column=3).valuesheet['A1'] = '47'workbook_.save(u"新歌检索失败1477881109469_new.xlsx")wb = Workbook()ws = wb.activews['A1'] = 4wb.save("新歌检索失败.xlsx")⽰例:import openpyxl# 新建⽂件workbook = openpyxl.Workbook()# 写⼊⽂件sheet = workbook.activesheet['A1']='A1'# 保存⽂件workbook.save('test.xlsx')5.xlsxwriter可以写excel⽂件并加上图表import xlsxwriterdef get_chart(series):chart = workbook.add_chart({'type': 'line'})for ses in series:name = ses["name"]values = ses["values"]chart.add_series({'name': name,'categories': 'A2:A10','values':values})chart.set_size({'width': 700, 'height': 350})return chartif __name__ == '__main__':workbook = xlsxwriter.Workbook(u'H5应⽤中⼼关键数据及趋势.xlsx') worksheet = workbook.add_worksheet(u"每⽇PV,UV")headings = ['⽇期', '平均值']worksheet.write_row('A1', headings)index=0for row in range(1,10):for com in [0,1]:worksheet.write(row,com,index)index+=1series = [{"name":"平均值","values":"B2:B10"}]chart = get_chart(series)chart.set_title ({'name': '每⽇页⾯分享数据'})worksheet.insert_chart('H7', chart)workbook.close()openpyxl⽰例:import xlsxwriter as xw#新建excelworkbook = xw.Workbook('myexcel.xlsx')#新建⼯作薄worksheet = workbook.add_worksheet()#写⼊数据worksheet.wirte('A1',1)#关闭保存workbook.close()合并表格实例:#coding:utf-8import xlsxwriterimport xlrd#新建excelworkbook = xlsxwriter.Workbook('⼴东.xlsx')#新建⼯作薄worksheet = workbook.add_worksheet()count = 1worksheet.write("A%s"%count,"公司名称")worksheet.write("B%s"%count,"法⼈")worksheet.write("C%s"%count,"电话")worksheet.write("D%s"%count,"注册资⾦")worksheet.write("E%s"%count,"注册时间")count+=1for i in range(1,153):data = xlrd.open_workbook('ah (%s).xls'%i) # 打开xls⽂件 table = data.sheets()[0] # 打开第⼀张表nrows = table.nrows # 获取表的⾏数for i in range(nrows): # 循环逐⾏打印if i == 0:# 跳过第⼀⾏continue# print (table.row_values(i)[:5]) # 取前⼗三列print(count,table.row_values(i)[:5][0])#写⼊数据#设定第⼀列(A)宽度为20像素 A:E表⽰从A到Eworksheet.set_column('A:A',30)worksheet.set_column('B:E',20)worksheet.write("A%s"%count,table.row_values(i)[:5][0]) worksheet.write("B%s"%count,table.row_values(i)[:5][1]) worksheet.write("C%s"%count,table.row_values(i)[:5][2]) worksheet.write("D%s"%count,table.row_values(i)[:5][3]) worksheet.write("E%s"%count,table.row_values(i)[:5][4]) count+=1#关闭保存workbook.close()。

【Python】xlrdxlwt操作excel及常用操作

【Python】xlrdxlwt操作excel及常用操作

【Python】xlrdxlwt操作excel及常⽤操作⼀、代码备注:封装好了(可直接调⽤)"""-*- coding:utf-8 -*-@Time :2021/12/10 20:02@Author :@File :@Version:1.0"""from typing import Listimport xlwtclass JarExcelUtil:def__init__(self, header_list: List[list]):""":param header_list: 如下格式例1:默认列宽header_list = [['序号'], # 表格第0列[此列表头名称]['姓名'],['性别'],['爱好'],['⽣⽇']]例2:⾃定义列宽(列宽值为int类型英⽂字符长度如:10 表⽰列宽为10个英⽂字符长度)header = [['序号', 5], # 表格第0列[此列表头名称,列宽]['姓名', 10], # 表格第1列[此列表头名称,列宽]['性别', 10],['爱好', 10],['⽣⽇', 20]]"""self.data = header_listself.__color_str = 'aqua 0x31\r\n\black 0x08\r\n\blue 0x0C\r\n\blue_gray 0x36\r\n\bright_green 0x0B\r\n\brown 0x3C\r\n\coral 0x1D\r\n\cyan_ega 0x0F\r\n\dark_blue 0x12\r\n\dark_blue_ega 0x12\r\n\dark_green 0x3A\r\n\dark_green_ega 0x11\r\n\dark_purple 0x1C\r\n\dark_red 0x10\r\n\dark_red_ega 0x10\r\n\dark_teal 0x38\r\n\dark_yellow 0x13\r\n\gold 0x33\r\n\gray_ega 0x17\r\n\gray25 0x16\r\n\gray40 0x37\r\n\gray50 0x17\r\n\gray80 0x3F\r\n\green 0x11\r\n\ice_blue 0x1F\r\n\indigo 0x3E\r\n\ivory 0x1A\r\n\lavender 0x2E\r\n\light_blue 0x30\r\n\light_green 0x2A\r\n\light_orange 0x34\r\n\light_turquoise 0x29\r\n\light_yellow 0x2B\r\n\lime 0x32\r\n\magenta_ega 0x0E\r\n\ocean_blue 0x1E\r\n\olive_ega 0x13\r\n\olive_green 0x3B\r\n\orange 0x35\r\n\pale_blue 0x2C\r\n\periwinkle 0x18\r\n\plum 0x3D\r\n\purple_ega 0x14\r\n\red 0x0A\r\n\rose 0x2D\r\n\sea_green 0x39\r\n\silver_ega 0x16\r\n\sky_blue 0x28\r\n\tan 0x2F\r\n\teal 0x15\r\n\teal_ega 0x15\r\n\turquoise 0x0F\r\n\violet 0x14\r\n\white 0x09\r\n\yellow 0x0D'self.color_list = [] # [[]] [['aqua', '0x31'], ['black', '0x08'], ...]for color in self.__color_str.split('\r\n'):color = color.split('')self.color_list.append(color)def write(self,out_file,data_body: List[list],sheet_name='sheet',frozen_row: int = None,frozen_col: int = 0,row_style: list = None,header_index_=0,before_header_data: list = None,body_col_align: list = None,):"""写⼊数据:param out_file: 保存⽂件(如:test.xlsx):param data_body: data_body[0]为表格第0⾏数据 data_body[0][0]为表格第0⾏第0列单元格值:param sheet_name::param frozen_row: 冻结⾏(默认表头⾏):param frozen_col: 冻结列(默认不冻结):param row_style: [4,6] 给第4、5⾏标注⾼亮背景⾊:param header_index_: 第⼏⾏为表头(默认第0⾏)若before_header_data != None,则此属性失效:param before_header_data: 表头之前的数据 before_header_data=[[第0⾏第0列,第0⾏第1列],[第1⾏第0列,第1⾏第1列]]:param body_col_align: 表体指定列对齐⽅式(不含表头) body_col_align=[[第0⾏第0列,第0⾏第1列],[第1⾏第0列,第1⾏第1列]] """# step1 判断数据正确性(每⾏列数是否与表头相同)count = 0for pro in data_body:if len(pro) != len(self.data):raise Exception('data_body数据错误第{}⾏(从0开始)需为{}个元素当前⾏{}个元素:{}'.format(count, len(self.data), len(pro), str(pro))) count += 1# step2 写⼊数据wd = xlwt.Workbook()sheet = wd.add_sheet(sheet_name)ali_horiz = 'align: horiz center'# ⽔平居中ali_vert = 'align: vert center'# 垂直居中fore_colour = 'pattern: pattern solid,fore_colour pale_blue'# 设置单元格背景⾊为pale_blue⾊fore_colour_highlight = 'pattern: pattern solid,fore_colour light_orange'# 设置单元格背景⾼亮# 表头格式(垂直+⽔平居中、表头背景⾊)style_header = xlwt.easyxf('{};{};{}'.format(fore_colour, ali_horiz, ali_vert))# 表体格式(垂直居中)style_body = xlwt.easyxf('{}'.format(ali_vert))# 表体格式(垂直居中+背景⾊)style_body_highlight = xlwt.easyxf('{};{}'.format(ali_vert, fore_colour_highlight))# 表体指定列对齐⽅式(⽔平居中)style_body_col_align = xlwt.easyxf('{}'.format(ali_horiz))# 表头之前的数据if before_header_data is not None:header_index_ = len(before_header_data)for pro in before_header_data:now_index = before_header_data.index(pro)sheet.row(now_index).height_mismatch = Truesheet.row(now_index).height = 20 * 20 # 20为基数 * 20榜# 当前⾏是否需要添加⾼亮背景⾊for d in pro:value = pro[pro.index(d)]# 若值类型是int、float 直接写⼊反之转成字符串写⼊if type(value) == int or type(value) == float:sheet.write(now_index, pro.index(d), value, style_body)sheet.write(now_index, pro.index(d), str(value), style_body)# 表头header_index = header_index_for col in self.data:# 默认列宽if len(col) == 1:sheet.write(header_index, self.data.index(col), str(col[0]), style_header)# ⾃定义列宽if len(col) == 2:sheet.write(header_index, self.data.index(col), str(col[0]), style_header)# 设置列宽sheet.col(self.data.index(col)).width = 256 * col[1] # 256为基数 * n个英⽂字符# 表头⾏⾼sheet.row(header_index).height_mismatch = Truesheet.row(header_index).height = 20 * 20 # 20为基数 * 20榜# 表体body_index = header_index + 1for pro in data_body:sheet.row(body_index).height_mismatch = Truesheet.row(body_index).height = 20 * 20 # 20为基数 * 20榜# 当前⾏是否需要添加⾼亮背景⾊sb = [ali_vert] # 垂直居中if row_style is not None and body_index in row_style: sb.append(fore_colour_highlight) # 背景⾊for d in self.data:value = pro[self.data.index(d)]if body_col_align is not None and self.data.index(d) in body_col_align:sb.append(ali_horiz) # ⽔平居中s_body = xlwt.easyxf(';'.join(sb))sb.pop() # 删除sb中的⽔平居中不然会影响下次循环print(body_index, self.data.index(d), value)else:s_body = xlwt.easyxf(';'.join(sb))# 若值类型是int、float 直接写⼊反之转成字符串写⼊if type(value) == int or type(value) == float:sheet.write(body_index, self.data.index(d), value, s_body)else:sheet.write(body_index, self.data.index(d), str(value), s_body)body_index += 1# 冻结(列与⾏)sheet.set_panes_frozen('1')sheet.set_horz_split_pos(header_index + 1 if frozen_row is None else frozen_row) # 冻结前n⾏(默认表头⾏) sheet.set_vert_split_pos(frozen_col) # 冻结前n列wd.save(out_file)def color_test(self):"""测试颜⾊"""body_t = []for color in self.color_list:print(color)body_t.append(color)wd = xlwt.Workbook()sheet = wd.add_sheet('sheet')index = 0for b in body_t:ali = 'align: horiz center;align: vert center'# 垂直居中⽔平居中fore_colour = 'pattern: pattern solid,fore_colour {}'.format(self.color_list[index][0]) # 设置单元格背景⾊为pale_blue⾊style_header = xlwt.easyxf('{};{}'.format(fore_colour, ali))sheet.write(index, 0, str(b), style_header)sheet.col(0).width = 256 * 150 # 256为基数 * n个英⽂字符index += 1wd.save('颜⾊测试.xlsx')# 测试颜⾊# if __name__ == '__main__':# header_t = [# ['颜⾊']# ]# JarExcelUtil(header_t).color_test()if__name__ == '__main__':header = [['序号', 5],['姓名', 10],['性别', 10],['爱好', 10],['⽣⽇', 20]]# header = [# ['序号'],# ['姓名'],# ['性别'],# ['爱好'],# ['⽣⽇']# ]body = [[1, '张三', '男', '篮球', '1994-07-23'],[2, '李四', '⼥', '⾜球', '1994-04-03'],[3, '王五', '男', '兵乓球', '1994-09-13']]before_data = [['地址', ''],['env', '192.168.1.1']]JarExcelUtil(header_list=header).write(out_file='测试.xlsx', data_body=body, before_header_data=before_data)⼆、效果⽣成的Excel三、常⽤操作3.1、设置⾏⾼# ⾏⾼(第0⾏)sheet.row(0).height_mismatch = Truesheet.row(0).height = 20 * 20 # 20为基数 * 20榜3.2、设置列宽# 列宽(第0列)sheet.col(0).width = 256 * 30 # 256为基数 * 30个英⽂字符(约)3.3、冻结(列与⾏)# 冻结(列与⾏)sheet.set_panes_frozen('1')sheet.set_horz_split_pos(2) # 冻结前2⾏sheet.set_vert_split_pos(3) # 冻结前3列# 冻结⾸⾏sheet.set_panes_frozen('1')sheet.set_horz_split_pos(1) # 冻结前1⾏(即⾸⾏)3.4、设置单元格对齐⽅式# ⽅式1style_1 = xlwt.XFStyle()al_1 = xlwt.Alignment()al_1.horz = xlwt.Alignment.HORZ_CENTER # ⽔平居中al_1.vert = xlwt.Alignment.VERT_CENTER # 垂直居中style_1.alignment = al_1sheet.write(0, 0, '第0⾏第0列单元格值', style_1)# ⽅式2(推荐)ali_horiz = 'align: horiz center'# ⽔平居中ali_vert = 'align: vert center'# 垂直居中style_2 = xlwt.easyxf('{};{}'.format(ali_horiz, ali_vert))sheet.write(0, 0, '第0⾏第0列单元格值', style_2)3.5、设置单元格背景⾊# 设置单元格背景⾊fore_colour = 'pattern: pattern solid,fore_colour pale_blue'# 设置单元格背景⾊为pale_blue⾊(具体颜⾊值参考上⾯代码JarExcelUtil类中的color_test⽅法的运⾏结果)style = xlwt.easyxf('{}'.format(fore_colour))sheet.write(0, 0, '第0⾏第0列单元格值', style)。

python实现Excel删除特定行、拷贝指定行操作

python实现Excel删除特定行、拷贝指定行操作

python实现Excel删除特定⾏、拷贝指定⾏操作⼯作中遇到的,本来⽤VBA写的,操作很慢,尝试⽤Python实现,任务需求:从原始的两张表中拷贝⾏到五张表中,如下表所⽰:source1和source2是⼀样的格式:one two three four five12311112222333344445555⽬标表格有one,two,three,four,five。

将前三列和对应表的两列拷贝到⽬标表格中,⽬标表格中原始也需要删除有关键字的⾏(注释代码中实现了,但是有8000多⾏,删除很耗时,改为了⼿动删除),然后把source1和source2含有同样关键字的⾏拷贝过来,拷贝的列索引是固定的实现:采⽤xlrd读Excel,xlutils写Excel,注释中⽤win32com删除⾏(需要安装模块pip install pywin32)#! /usr/bin/env python# encoding:utf-8import osimport xlrdfrom xlutils.copy import copyimport win32com.client as win32'''⽂件名、修改的表名、查找的字符串固定,如有变化,则相应修改'''regstr = ['str1', 'str2']tarExcels = ['one.xls','two.xls','three.xls','four.xls','five.xls']tarSheet = 'targetSheet'sourceExcels =['source1.xlsm','source2.xlsm']def copyFeatrue(sourcefiles,targetfiles):for item in sourcefiles:workbook = xlrd.open_workbook(item)shEng = workbook.sheet_by_index(0)rowNum = shEng.nrows'''从原始中英⽂表中提取出要放⼊五张表的内容'''ListMacro =[]ListMICRO =[]ListATOM =[]List3205E =[]List3911E =[]startRowIdx = 0for row in range(rowNum):if shEng.cell(row,4).value in regstr:breakstartRowIdx += 1for rowIdx in range(startRowIdx,rowNum):commstr =[]tempMacro = []tempMICRO = []tempATOM = []temp3205E = []temp3911E = []'''前三列公共,后⾯五张表各⾃取不同的列'''commstr.append(shEng.cell(rowIdx,0).value)commstr.append(shEng.cell(rowIdx,1).value)commstr.append(shEng.cell(rowIdx,2).value)if shEng.cell(rowIdx,4).value:tempMacro.extend(commstr)tempMacro.append(shEng.cell(rowIdx,4).value)tempMacro.append(shEng.cell(rowIdx, 5).value)if shEng.cell(rowIdx, 8).value:tempMICRO.extend(commstr)tempMICRO.append(shEng.cell(rowIdx, 8).value)tempMICRO.append(shEng.cell(rowIdx, 9).value)if shEng.cell(rowIdx, 10).value:tempATOM.extend(commstr)tempATOM.append(shEng.cell(rowIdx, 10).value)tempATOM.append(shEng.cell(rowIdx, 11).value)if shEng.cell(rowIdx, 12).value:temp3205E.extend(commstr)temp3205E.append(shEng.cell(rowIdx, 12).value)temp3205E.append(shEng.cell(rowIdx, 13).value)if shEng.cell(rowIdx, 14).value:temp3911E.extend(commstr)temp3911E.append(shEng.cell(rowIdx, 14).value)temp3911E.append(shEng.cell(rowIdx, 15).value)if tempMacro:ListMacro.append(tempMacro)if tempMICRO:ListMICRO.append(tempMICRO)if tempATOM:ListATOM.append(tempATOM)if temp3205E:List3205E.append(temp3205E)if temp3911E:List3911E.append(temp3911E)'''表名和抽取出的内容⼀⼀对应'''dic ={}dic[tarExcels[0]] = List3911Edic[tarExcels[1]] = List3205Edic[tarExcels[2]] = ListATOMdic[tarExcels[3]] = ListMICROdic[tarExcels[4]] = ListMacrorealfile ='''''通过表名查找到对应的表的绝对路径,以便读取'''for j in range(5):for fileidx in range(len(targetfiles)):if tarExcels[j] in targetfiles[fileidx]:realfile = targetfiles[fileidx]breakworkdest1 = xlrd.open_workbook(realfile)shdest1 = workdest1.sheet_by_name(tarSheet)rows = shdest1.nrowstargetlist = dic[tarExcels[j]]'''创建新表,将对应内容写⼊对应表中'''newbook = copy(workdest1)newsheet = newbook.get_sheet(tarSheet)listidx = 0'''写⼊表的位置固定,根据列索引写⼊'''for r in range(rows,rows+len(targetlist)):newsheet.write(r,0,targetlist[listidx][0])newsheet.write(r, 1, targetlist[listidx][1])newsheet.write(r, 2, targetlist[listidx][2])newsheet.write(r, 4, targetlist[listidx][3])newsheet.write(r, 5, targetlist[listidx][4])listidx += 1newbook.save(realfile)if __name__ == '__main__':print('Running! Please Wait!\n')targetfiles =[]sourcefiles =[]'''遍历脚本所在⽬录下所有⽂件,并且找出与⽬标⽂件⼀致的⽂件的绝对路径''' for root,dirs,files in os.walk(os.getcwd()):for name in files:if name in tarExcels:targetfiles.append(os.path.join(root, name))if name in sourceExcels:sourcefiles.append(os.path.join(root, name))copyFeatrue(sourcefiles,targetfiles)print('^_^Success!^_^')input('input any key to continue!\n')'''class copyExcel:def __init__(self,filename = None):self.workApp = win32.Dispatch('Excel.Application')if filename:self.filename = filenameself.workbook = self.workApp.Workbooks.Open(filename)else:self.workbook = self.workApp.Workbooks.Add()self.filename = ''def deleteRow(self,sheet,row):sht = self.workbook.Worksheets(sheet)sht.Rows(row).Delete()def save(self, newfile=None):if newfile:self.filename = newfileself.workbook.SaveAs(newfile)else:self.workbook.Save()def close(self):self.workbook.Close(SaveChanges = 0)del self.workAppdef getCell(self,sheet,row,col):sht = self.workbook.Worksheets(sheet)return sht.Cells(row,col).Valuedef setCell(self,sheet,row,col,value):sht = self.xlBook.Worksheets(sheet)sht.Cells(row, col).Value = valuedef getRowNum(self,sheet):sht = self.workbook.Worksheets(sheet)return edrange.rows.count##删除⽬标字符串对应的⾏def delFeature(destdir):for i in range(len(tarExcels)):sourfile = destdir + '\\' + tarExcels[i]temp = copyExcel(sourfile)#workbook = win32.Dispatch('Excel.Application').Workbooks.Open('D:\py\chen\liu.xlsx') rowNum = temp.getRowNum(tarSheet)print(rowNum)row = 1while row <= rowNum:#print(row)if temp.getCell(tarSheet,row,5) == 'str1' or temp.getCell(tarSheet,row,5) == 'str2':temp.deleteRow(tarSheet,row)row -= 1rowNum -=1row += 1temp.save()temp.close()'''。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

You are here: Home»计算机»编程» Python操作ExcelPython操作Excel2012-09-01老婆单位有时候有一些很大的 Excel 统计报表需要处理,其中最恶心的是跨表的 JOIN 查询。

他们通常采取的做法是,把多个 Excel 工作簿合成一个工作簿的多个表格,然后再跑函数(VLOOKUP之类)去查。

因为用的函数效率很低,在 CPU 打满的情况下还要跑几个小时。

然后我就看不过去了,我也不懂 Excel,不知道如何优化,但我想用Python+SQLite 总归是能够实现的。

于是就尝试了一把,效果还不错,一分钟以内完成统计很轻松,其中大部分时间主要花在读 Excel 内容上。

1. Python 操作 Excel 的函数库我主要尝试了 3 种读写 Excel 的方法:1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都可以使用。

xlrd 可以读取 .xls, .xlsx 文件,非常好用;但因为 xlwt 不能直接修改 Excel 文档,必须得复制一份然后另存为其它文件,而且据说写复杂格式的 Excel 文件会出现问题,所以我没有选它来写 Excel 文件。

2> openpyxl: 这个库也是不需要其它支持的,而且据说对 Office 2007 格式支持得更好。

遗憾地是,我经过测试,发现它加载 Excel 文件的效率比 xlrd 慢 3 倍以上,内存使用在 10 倍以上,于是就放弃了。

3> win32com: Python Win32 扩展,这个库需要运行环境为 Windows+Office 对应版本。

由于 Python Win32 扩展只是把 COM 接口包装了一下,可以视为与VBA 完全相同,不会有读写格式上的问题。

尝试了一下用 win32com 读取 Excel 文件,效率还是比 xlrd 慢一些。

由于读取效率上 xlrd > win32com > openpyxl,所以我自然选择了 xlrd 用来读取统计报表;而最终输出的报表格式较复杂,所以选择了 win32com 直接操作 Excel 文件。

2. Python 里的关系型数据库SQLite是一个非常轻量级的关系型数据库,很多语言和平台都内置 SQLite 支持,也是 iOS 和 Android 上的默认数据库。

Python 的标准库里也包含了sqlite3库,用起来非常方便。

3. 用 xlrd 读取 Excel 并插入数据库样例如果数据量不大,直接用 Python 内部数据结构如 dict, list 就够了。

但如果读取的几张表数据量都较大,增加个将数据插入数据库的预处理过程就有很大好处。

一是避免每次调试都要进行耗时较长的 Excel 文件载入过程;二是能充分利用数据库的索引和 SQL 语句强大功能进行快速数据分析。

#!/usr/bin/python# -*- coding: gbk -*-import xlrdimport sqlite3# 打开数据库文件device_city_db = ('')cursor = ()# 建表('DROP TABLE IF EXISTS device_city')('CREATE TABLE device_city (device_id char(16) PRIMARY KEY, city varchar(16))')# 打开 device 相关输入 Excel 文件device_workbook = ('输入.xlsx')device_sheet = ('设备表')# 逐行读取 device-城市映射文件,并将指定的列插入数据库for row in range(1, :device_id = (row, 6).valueif len(device_id) > 16:device_id = device_id[0:16]if len(device_id) == 0:continuecity = (row, 10).value# 避免插入重复记录('SELECT * FROM device_city WHERE device_id=', (device_id,))res = ()if res == None:('INSERT INTO device_city (device_id, city) VALUES (, )',(device_id, city))else:if res[1] != city:print'%s, %s, %s, %s' % (device_id, city, res[0], res[1])()4. 将结果写入 Excel 文件样例使用 win32com 写入 Excel 的时候要注意,一定要记得退出 Excel,否则下次运行会出错。

这需要增加异常处理语句,我这里偷了个懒,出了异常后要手动杀死任务管理器中的 excel 进程。

至于 win32com 中类的接口,可以从 MSDN 网站查阅。

import as win32import osexcel = '')= False# 貌似这里只能接受全路径workbook = '输出.xlsx'))month_sheet = (1)# 计算文件中实际有内容的行数nrows = ('A65536').End# 操作 Excel 单元格的值for row in range(5, nrows-4): (row, 1).Value += something # 保存工作簿()# 退出 Excelpython操作Excel读写--使用xlrd 一、安装xlrd模块到python官网下载模块安装,前提是已经安装了python 环境。

二、使用介绍1、导入模块import xlrd2、打开Excel文件读取数据data = ('')3、使用技巧获取一个工作表table = ()[0] #通过索引顺序获取table = (0) #通过索引顺序获取table = (u'Sheet1')#通过名称获取获取整行和整列的值(数组)(i)(i)获取行数和列数nrows =ncols =循环行列表数据for i in range(nrows ):print (i)单元格cell_A1 = (0,0).valuecell_C4 = (2,3).value使用行列索引cell_A1 = (0)[0].valuecell_A2 = (1)[0].value简单的写入row = 0col = 0# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error ctype = 1value = '单元格的值'xf = 0# 扩展的格式化(row, col, ctype, value, xf)(0,0) #单元格的值'(0,0).value #单元格的值'三、Demo代码Demo代码其实很简单,就是读取Excel数据。

1# -*- coding: utf-8 -*-2import xdrlib ,sys3import xlrd4def open_excel(file= ''):5try:6 data = (file)7return data8except Exception,e:9print str(e)10#根据索引获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_index:表的索引11def excel_table_byindex(file= '',colnameindex=0,by_index=0):12 data = open_excel(file)13 table = ()[by_index]14 nrows = #行数15 ncols = #列数16 colnames = (colnameindex) #某一行数据17 list =[]18for rownum in range(1,nrows):1920 row = (rownum)21if row:22 app = {}23for i in range(len(colnames)):24 app[colnames[i]] = row[i]25 (app)26return list2728#根据名称获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_name:Sheet1名称29def excel_table_byname(file='',colnameindex=0,by_name=u'Sheet1'):30 data = open_excel(file)31 table = (by_name)32 nrows = #行数33 colnames = (colnameindex) #某一行数据34 list =[]35for rownum in range(1,nrows):36 row = (rownum)37if row:38 app = {}39for i in range(len(colnames)):40 app[colnames[i]] = row[i]41 (app)42return list4344def main():45 tables = excel_table_byindex()46for row in tables:47print row4849 tables = excel_table_byname()50for row in tables:51print row5253if__name__=="__main__":54 main()。

相关文档
最新文档