Python操作excel基础

目录

前言

Python 读取excel

方式一:使用openpyxl库

方式二:使用xlrd库

Python xlwt库

Python xlutils 

Python语法

中断跳出内存for循环

python安装 & Jupyter Notebook

安装xlrd 和xlwt

安装pandas

参考


前言

基于自己实际工作使用情况,做下面学习记录和整理。

python 数据类型转换语法

str( )    可以把其他类型数据转化为字符串类型
int( )    可以把其他类型数据转化为整型
float( )  可以把其他类型数据转化为浮点型
bool( )   可以把其他类型数据转化为布尔类型
list( )   可以把其他类型数据转化为列表类型
tuple( )  可以把其他类型数据转化为元组类型
dict( )   可以把其他类型数据转化为字典类型
set( )    可以把其他类型数据转化为集合类型


python字符串删除指定元素

#1.pop方法
s1 = 'hello,world!'
lst_s1 = list(s1)      # 将字符串转为列表
lst_s1.pop(1)          # 删除下标为1的字符,即删除字母e
print(''.join(lst_s1)) # 输出为hllo,world! #用于将转换列表的字符串再转为字符串

#2.replace方法
s1 = 'hello,world!'      #删除字符l
print(s1.replace('l',''))  #输出 heo,word! 


#3 使用切片 + 拼接的方式,删除字符串中单个固定位置的字符
s = 'abc:cba'           #删除字符:
s1 = s[:3] + s[-3:]     #切片+拼接
print(s1)               #输出:abccba

Python 读取excel

方式一:使用openpyxl库

import openpyxl
from   openpyxl import Workbook

#快捷键说明 
#CTRL + /    快速注释掉选中区域代码

#----------------------------第一部分----------------------------------------#
#1、rd excel,打开工作簿
wb = openpyxl.load_workbook('c:/Users/Desktop/ww.xlsx')

#2、查看有哪些表单
#print(wb.sheetnames)

#3、遍历表单,把表单名称打印处理
#for sheet in wb:
#    print(sheet.title)

#4、创建新的表单Sheet
mySheet = wb.create_sheet('mySheet')
#print(wb.sheetnames)

#5、操作表单 
sheet3 = wb.get_sheet_by_name('mySheet')
sheet1 = wb['Sheet1']

#6、获取活跃表单
sheet_act = wb.active
#print(sheet_act)
#print(sheet_act['A1'])
#print(sheet_act['A1'].value)#打印单元格值

#7、获取单元格行列坐标
c = sheet1['A1']
#print('Row{},Column{} is {}'.format(c.row,c.column,c.value))
#print('Cell{} is {}'.format(c.coordinate,c.value))

#8、切片访问EXCEL文件指定区域单元格
#print(sheet1.cell(row=1,column=1))
#print(sheet1.cell(row=1,column=1).value)

#切片访问方式一
#正序访问,row = 1 ,2
#for i in range(1,3):
#    print(i,sheet1.cell(row=i,column=2).value)

#倒序访问,row = 2 ,1
#for i in range(2,0,-1):
#     print(i,sheet1.cell(row=i,column=2).value)

#切片访问方式二
col_range = sheet1['A:B']
row_range = sheet1[1:2]

# for col in col_range:
#     for cell in col:
#         print(cell.value)

# for row in row_range:
#     for cell in row:
#         print(cell.value)        

#切片访问方式三
# for row in sheet1.iter_rows(min_row=1,max_row=2,max_col=2):
#     for cell in row:
#         print(cell.value)

#切片访问方式四
# cell_range = sheet1['A1:C3']
# for row0fCell0bjects in cell_range:
#     for cell0bj in row0fCell0bjects:
#         print(cell0bj.coordinate,cell0bj.value)
#     print('----------END OF ROW----------')
    
#9、获取整列
#colC = sheet1['B']
#print(colC)
#print(colC[2].value) #打印该列第3行数值
#row6 = sheet1[6]

#10、获取最大行列数值
print('{}*{}'.format(sheet1.max_row,sheet1.max_column))

#----------------------------第二部分----------------------------------------#
import openpyxl
from   openpyxl import Workbook

#给单元格赋值,并保存
wb2 = openpyxl.load_workbook('c:/Users/oo/Desktop/uu.xlsx')
sheet       = wb2['vv']
sheet['A1'] = 'Hello'
print(sheet['A1'].value)
wb2.save('c:/Users/oo/Desktop/uu.xlsx')


#创建一个新的工作簿
#wb2 = openpyxl.Workbook()
#print(wb2)
#wb2.sheetnames

#给工作表设置名称
# sheet = wb2.active
# sheet.title = 'vv'
# print(wb2.sheetnames)

#保存工作簿
#wb2.save('c:/Users/oo/Desktop/uu.xlsx')

#创建Sheet
# wb2 = openpyxl.load_workbook('c:/Users/oo/Desktop/uu.xlsx')
# wb2.create_sheet(title='WW')
# wb2.sheetnames

#删除Sheet
# del wb2['WW']
# wb2.sheetnames

openpyxl库


import openpyxl
from   openpyxl import Workbook

#1、rd excel
wb = openpyxl.load_workbook('c:/Users/Desktop/TT.xlsx')

#2、get sheet
sheet=wb['Sheet1']              #excel文件中名称为'Sheet1'的sheet工作表


#print(sheet['A1'].value)      #打印单元格值            
#sheet['A1'] = 20              #给单元格赋值
#print(sheet['A1'].value)


#遍历指定区间单元格
for cell_data in sheet['F2':'F1690']:                      #获取单元格范围,赋值给cell_data
    for cell in cell_data:                                 #for循环遍历cell_data
        str2 = '0x' + str(cell.value)                      #将cell转换成字符串
        #print(str2)
        cell.value = str2                                  #给单元格赋值
        print(cell.value)

wb.save('c:/Users/oo/Desktop/vv.xlsx')                     存储当前excel文件

##############################################################
#知识储备


#lower():所有字母小写
#capitalize():首字母大写,其他字母小写
#title():每个单词首字母大写,其他小写

#单元格属性
#cell.value         #单元格值
#cell.row           #单元格行序号
#cell.column        #单元格列序号
#cell.coordinate    #单元格坐标

#string.ljust(width) 返回一个原字符串左对齐,并使用(英文)空格填空至长度width的新字符串
#string.rjust(width) 返回一个原字符串右对齐,并使用(英文)空格填空至长度width的新字符串
#string.center(width) 返回一个原字符串居中,并使用(英文)空格填空至长度width的新字符串


##############################################################

#0、导入数据库
import pandas   as     pd
import numpy    as     np
import openpyxl
from   openpyxl import Workbook

#1、rd excel
wb = openpyxl.load_workbook('c:/Desktop/list.xlsx')

#2、get sheet
sheet=wb['interrupt_list']                               #excel文件中名称为'interrupt_list'的sheet工作表

#3、get strings
file = open('c:/Desktop/wt.h','w')                       #创建并打开文件wt.h,数据传递给file

#指定单元格区间,开始遍历
for cell_data in sheet['C3':'C98']:                      #获取单元格范围,赋值给cell_data
    for cell in cell_data:                               #for循环遍历cell_data
        if cell.value == None:                           #如果单元格空
            print('empty')                               #打印
        else:                                            #如果单元格不空
            str1 = cell.row -3                           #str1 = 当前单元格行序号-3
            str1 = str(str1)                             #将int类型转换成字符串
            str1 = str1.rjust(3)                         #将str1字符串右对齐,不足的填充空格,处理后字符串位宽为3
            str1 = ('32+'+str1)                          #字符串拼接
            str1 = '('+str1+')'                          #字符串拼接
            str2 = 'INT_'+cell.value.upper()             #字符串拼接 + 将单元格字符串转换成大写
            str2 = str2.ljust(30)                        #字符串左对齐
            str3 = '#define    ' + str2+   str1          #字符串拼接
            print(str3)                                  #打印
            file.write(str3)                             #文件写入
            file.write('\n')                             #回车
file.close()                                             #关闭文件

##############################################################
#知识储备


#lower():所有字母小写
#capitalize():首字母大写,其他字母小写
#title():每个单词首字母大写,其他小写

#单元格属性
#cell.value         #单元格值
#cell.row           #单元格行序号
#cell.column        #单元格列序号
#cell.coordinate    #单元格坐标

#string.ljust(width) 返回一个原字符串左对齐,并使用(英文)空格填空至长度width的新字符串
#string.rjust(width) 返回一个原字符串右对齐,并使用(英文)空格填空至长度width的新字符串
#string.center(width) 返回一个原字符串居中,并使用(英文)空格填空至长度width的新字符串


##############################################################

方式二:使用xlrd库

import sys,getopt,os,logging,pdb,re,xlrd,copy,time,math
#import openpyxl
#from   openpyxl import Workbook

#1、rd excel
#wb = openpyxl.load_workbook('c:/Desktop/list.xlsx')
wb =xlrd.open_workbook('c:/Desktop/list.xlsx')

#2、get sheet
#sheet=wb['interrupt_list']                               #excel文件中名称为'interrupt_list'的sheet工作表
sheet=wb.sheet_by_name('interrupt_list')


title_str = '//============================ define digital Decimal ============================'
file      = open('c:/Desktop/irq.h','w')                #创建并打开文件wt.h,数据传递给file
file.write(title_str)                                    #文件写入
file.write('\n')                                         #回车

#3、get strings
for col in range(2, 3):
    for row in range(2,98):
        if sheet.cell_value(row,col) =='':               #如果单元格空
            print('empty')                               #打印
        else:                                            #如果单元格不空
            str1 = row -2                           #str1 = 当前单元格行序号-3
            str1 = str(str1)                             #将int类型转换成字符串
            str1 = str1.rjust(3)                         #将str1字符串右对齐,不足的填充空格,处理后字符串位宽为3
            str1 = ('32+'+str1)                          #字符串拼接
            str1 = '('+str1+')'                          #字符串拼接
            str2 = 'INT_'+sheet.cell_value(row,col).upper()             #字符串拼接 + 将单元格字符串转换成大写
            str2 = str2.ljust(30)                        #字符串左对齐
            str3 = '#define    ' + str2+   str1          #字符串拼接
            print(str3)                                  #打印
            file.write(str3)                             #文件写入
            file.write('\n')                             #回车
file.close() 

Python xlwt库

Python xlutils 

本节引用:xlwt库不新建,直接读取已存在的excel并写入

xlwt 写库的局限性: 只能写入新建的 excel
xlutils 库的 copy 功能可能帮助我们打破这个局限性。
首先,用pip install xlutils来添加 xlutils 库。

import xlwt
import xlrd
import xlutils.copy

rd = xlrd.open_workbook("Hello.xls", formatting_info = True)   # 打开文件
wt = xlutils.copy.copy(rd)   # 复制
sheets = wt.get_sheet(0)   # 读取第一个工作表
sheets.write(m, n, "I love you!")   # 向 m-1 行 n-1 列的单元格写入内容
wt.save("Hi.xls")   # 保存
 

实现原理就是:我先读,再用xlutils.copy的 copy 复制一份,复制的这个就能实现写入了。

xlrd.open_workbook("Hello.xls", formatting_info = True)
里面的参数是可选的: 很重要,这个是保留原格式,没有它的话你会发现新的 excel 一点样式都没有。
 

Python语法

中断跳出内存for循环

range(start, stop[, step]) 从 start 开始到 stop 结束(不包含 stop)返回一个整数序列的迭代对象, step 为他的步长

 for i in range(1,5):
     for j in range(5,10):
         print(i,j)
         if j==6:
             break         # 如果满足该条件,跳出内层for循环
         else:             # 如果不满足条件,则内层层for循环执行else 
             continue

python安装 & Jupyter Notebook

首先安装python:Download Python | Python.org 选择最新版本下载即可。   (python-3.8.1-amd64.exe)

然后安装anaconda,链接: anaconda。其内部集成了Jupyter Notebook。后面主要使用Jupyter。

安装完anaconda后,搜索程序Jupyter Notebook打开

安装xlrd 和xlwt

安装xlwt与xlrd步骤类似

安装pandas

参考

1、作者博文
用Python处理Excel数据,中文全基础系列教程】
Python操作Excel之xlrd库和xlwt库详解 - 知乎 (zhihu.com)
可能是全网最完整的 Python 操作 Excel库总结! - 知乎 (zhihu.com)
Python-xlrd — 利用Python操作Excel表格 - 知乎 (zhihu.com)
python实现——处理Excel表格(超详细)
2小时学会Python玩转Excel,实现高效率办公自动化,10分钟干完3小时的工作
知否,知否python基础-文本对齐(居中,左对齐,右对齐)
零基础开始用Python处理Excel数据
xlrd基本操作(内含ctype五种类型解析)
python数据类型转换
python对excel表进行排序
python初学—-实现excel里面读数据进行排序
python中excel数据排序_Python实现EXCEL表格的排序功能
使用python对两个Excel表进行数据比较,得到差异和相同的数据行
python对比两个excel表 【超简单】
python使用xlwt模块操作Excel
【Python教程】删除字符串中字符的四种方法
Python 入门 遍历循环 for.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值