当前位置: 首页 > news >正文

python使用openpyxl处理excel

文章目录

  • 一、写在前面
    • 1、安装openpyxl
    • 2、认识excel窗口
  • 二、基本使用
    • 1、打开excel
    • 2、获取sheet表格
    • 3、获取sheet表格 尺寸
    • 4、获取单元格数据
    • 5、获取区域单元格数据
    • 6、sheet.iter_rows()方法
    • 7、修改单元格的值
    • 8、向表格中插入行数据
    • 9、实战:合并多个excel
  • 三、获取Excel数据扩展
    • 1、获取单元格其他属性
    • 2、sheet.iter_cols()方法
    • 3、sheet.rows和sheet.columns
    • 4、插入空行和空列
    • 5、删除行和列
    • 6、创建新的sheet表
    • 7、删除sheet表
    • 8、新建Excel与修改sheet表名
    • 9、设置表格样式与单元格属性

一、写在前面

1、安装openpyxl

pip install openpyxl 

2、认识excel窗口

明确下行(row),列(column),单元格(cell),坐标(coordinate)与表(sheet)的概念。
这里还要注意一点,在Excel中是从1开始计数的,并不是像程序编码中0开始,这点很重要。比如图中 【后羿】标出来的格子对应的单元格是B4,B4就是它的坐标。

在这里插入图片描述

二、基本使用

1、打开excel

from openpyxl import load_workbookfilePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开已经存在的excel文件
print(workbook.sheetnames) # 打印excel中的表格(sheet)名
# 结果:['花名册', '成绩单']

2、获取sheet表格

在这里插入图片描述

在这里插入图片描述

'''
一般而言我们操作的都是第一个表,而获取表的方法也多种,常用的有三种:
workbook[表格名] :通过传入相应的表格名来获取对应的表数据;
workbook.worksheets[索引] :通过索引从workbook.worksheets中获取对应的表数据;
workbook.active :获取当前活动的工作表
'''
from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
print(workbook.sheetnames) # 打印excel中的表格(sheet)名
sheet = workbook["花名册"] # 根据表名获取表格
sheet2 = workbook.worksheets[0] #根据索引在worksheets中获取表格
sheet3 = workbook.active # 获取当前活跃的表
print(sheet)
print(sheet2)
print(sheet3)
'''
运行结果:
['花名册', '成绩单']
<Worksheet "花名册">
<Worksheet "花名册">
<Worksheet "成绩单">
'''

3、获取sheet表格 尺寸

'''
获取一个表格的尺寸
'''
from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
print(workbook.sheetnames) # 打印excel中的表格(sheet)名
sheet = workbook["花名册"] # 根据表名获取表格
sheet2 = workbook.worksheets[1] #根据索引在worksheets中获取表格
print(sheet, sheet.dimensions)
print(sheet2, sheet2.dimensions)
'''
运行结果:
['花名册', '成绩单']
<Worksheet "花名册"> A1:C5
<Worksheet "成绩单"> A1:D5
'''

4、获取单元格数据

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
sheet2 = workbook.worksheets[1] #根据索引在worksheets中获取表格
print(sheet["B2"]) #获取sheet的B2单元格的对象
print(sheet2["C4"]) #获取sheet2的C4单元的对象
print(sheet["B2"].value) #获取sheet的B2单元格中的值
print(sheet2["C4"].value) #获取sheet2的C4单元格中的值
'''
结果:
<Cell '花名册'.B2>
<Cell '成绩单'.C4>
李白
96
'''

单元格数据除了坐标的方式来定位,我们还可以用行列来找到它,比如B2对应的是第2行第2列(row=2,column=2), C4对应的是第4行第3列(row=4, column=3)。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
sheet2 = workbook.worksheets[1] #根据索引在worksheets中获取表格
cell = sheet.cell(row=2, column=2) #获取B2的数据
cell2 = sheet2.cell(row=4, column=3) #获取C4的数据
print(cell, cell.value) #获取B2单元格中的值
print(cell2, cell2.value) #获取C4单元格中的值

5、获取区域单元格数据

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
cells = sheet["A1:C4"] #获取A1:C4区域的数据
for i in cells:print(i)for j in i:print(j.value)'''
结果:
(<Cell '花名册'.A1>, <Cell '花名册'.B1>, <Cell '花名册'.C1>)
学号
姓名
性别
(<Cell '花名册'.A2>, <Cell '花名册'.B2>, <Cell '花名册'.C2>)
1
李白
男
(<Cell '花名册'.A3>, <Cell '花名册'.B3>, <Cell '花名册'.C3>)
2
甄姬
女
(<Cell '花名册'.A4>, <Cell '花名册'.B4>, <Cell '花名册'.C4>)
3
后羿
男
'''

从打印的结果可以看出,cells中的数据是按行读取的。

通过sheet[“坐标:坐标2”]获取区域内单元格的数据,它返回的是一个区域内的数据。其实我们还可以通过sheet[]方法获取某行或某列的数据,格式如下:
获取第A列的数据:sheet[“A”]
获取第4行的数据:sheet[“4”]

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
print("第4行的数据:")cells = sheet["4"] #获取第4行的数据
for i in cells:print(i.value)print("第A列的数据:")
cells = sheet["A"] #获取A列的数据
for i in cells:print(i.value)print("2-4行之间的数据:")
cells = sheet[2:4] #获取第2行到第4行之间的数据
for i in cells:print(i)for j in i:print(j.value)print("A-C列之间的数据:")
cells = sheet["A:C"] #获取第A列到第C列之间的数据
for i in cells:print(i)for j in i:print(j.value)

sheet[]获取单行单列的数据没有问题,如果获取多行或是多列呢?答案仍是通过sheet[]函数,格式如:
获取行1到行2之间的数据:sheet[“行1:行2”]
获取列1与列2之间的数据:sheet[“列1:列2”]
注意行是由数字表示,列是由A-Z的字母组合表示。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格print("2-4行之间的数据:")
cells = sheet[2:4] #获取第2行到第4行之间的数据
for i in cells:print(i)for j in i:print(j.value)print("A-C列之间的数据:")
cells = sheet["A:C"] #获取第A列到第C列之间的数据
for i in cells:print(i)for j in i:print(j.value)

6、sheet.iter_rows()方法

前面我们学习了用sheet[]方法获取单元格区域内数据,sheet[]很强大,既能获取单行或单列数据,又能获取多行或多列之间的数据,还能根据单元格坐标获取两个坐标内单元格的数据。

但是sheet[]方法有一定的局限性,比如我需要第10行至第15行,第3列至第10列之间的全部单元格数据,我需要先把行列信息转化为字母数字坐标,那有没有一种方法直接就根据行列数据就能获取相应范围内的数据呢,答案当然是有的,那就是sheet.iter_rows()。我们看下它的定义:

'''
min_row为最小行数索引
max_row为最大行数索引
min_col为最小列数索引
max_col为最大列数索引
'''
def iter_rows(self, min_row=None, max_row=None, min_col=None, max_col=None, values_only=False)

这里我们可以通过min_row,max_row,min_col,max_col来控制需要获取的行或列的索引,这四个值都是可以缺省的,如果全部缺省就是按行返回表的所有数据。这里需要注意索引最小值都是从1开始的。

values_only 默认是Flase, 如果设置为True则直接输出值,不必利用单元格的value属性来输出值了。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格# 按行获取范围内数据
for i in sheet.iter_rows(min_row=2, max_row=4, min_col=1, max_col=2):print(i)for j in i:print(j.value)# 按行获取所有数据
for i in sheet.iter_rows():print(i)for j in i:print(j.value)

当缺省min_row时是默认取的最小行;
当缺省max_row时是默认取的最大行;
当缺省min_col时是默认取的最小列;
当缺省max_col时是默认取的最大列;

7、修改单元格的值

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook['花名册'] # 根据表名获取表格sheet["B2"] = '有霸夫' # 修改B2单元格的值为'有霸夫'
cell = sheet["B3"] # 获取B3单元格为cell
cell.value = '蔡文姬' # 修改cell的内容为 '蔡文姬'savePath = r'D:\王者小学2.xlsx'
workbook.save(savePath) # 另存为D:\王者小学2.xlsx

8、向表格中插入行数据

append()会在表格已有的数据后面增添你要加入的数据,注意它是按行插入的。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) # 打开excel文件
sheet = workbook['花名册'] # 根据表名获取表格
data = [['5', '安琪拉', "女"],['6', '荆轲', "女"],['7', '夏侯惇', "男"],
]
for row in data:
sheet.append(row) #按行插入到表格数据最后面
workbook.save(filePath) # 保存到源文件

在这里插入图片描述

9、实战:合并多个excel

import time
from openpyxl import Workbook, load_workbook
import os
def 合并表格(file_dir, save_dir):files_name = os.listdir(file_dir)# 创建新表格new_wb = Workbook()new_ws = new_wb.activeheader = ['销售日期', '员工工号', '销售员', '货号', '销售单号', '销量', '销售额']new_ws.append(header)# 向新的表格写入数据for file_name in files_name:wb = load_workbook(file_dir + "\\" + file_name)for sheet in wb.sheetnames:ws = wb[sheet]# 设置values_only=True 则可以直接得到单元格中的值for row in ws.iter_rows(min_row=2, values_only=True):new_ws.append(row)print('全年销售数据为 %s 行' % (new_ws.max_row - 1)) # 去除第一行标题剩下的则为全年销售数据总行数# 数据保存if not os.path.exists(save_dir):os.makedirs(save_dir)new_wb.save(save_dir + "\\" + "全年数据.xlsx")if __name__ == '__main__':开始时间 = time.time()合并表格(r"D:\2024年销售明细", r"D:\2024年销售分析")print('合并完成耗时:', time.time() - 开始时间, "秒")

三、获取Excel数据扩展

1、获取单元格其他属性

'''
获取属性的方法其实跟获取值的方法是一样的,
cell.row:获取行数
cell.column:获取列数
cell.coordinate:获取坐标
'''
from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
sheet2 = workbook.worksheets[1] #根据索引在worksheets中获取表格
cell = sheet["B2"] #获取B2的数据
cell2 = sheet2["C4"] #获取C4的数据
print("单元格B2 行数:%s 列数:%s 值:%s 坐标:%s" % (cell.row, cell.column,
cell.value, cell.coordinate)) #获取B2单元格属性
print("单元格C4 行数:%s 列数:%s 值:%s 坐标:%s" % (cell2.row, cell2.column,
cell2.value, cell2.coordinate)) #获取C4单元格属性
'''
结果:
单元格B2 行数:2 列数:2 值:李白 坐标:B2
单元格C4 行数:4 列数:3 值:96 坐标:C4
'''

2、sheet.iter_cols()方法

sheet.iter_cols的使用可以说几乎跟sheet.iter_rows()是一样的:

  1. 当不传入参数时是按列获取表中的所有数据;
  2. 当设置参数时则返回参数限定范围内的表数据;
  3. 当设置的参数有缺省时,如果缺省的参数是min_row或min_col则取最小行或是最小列,如果是max_row或是max_col则取最大行或最大列。
from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格
print("不指定min_row:")# 按行获取值,缺省min_row
for i in sheet.iter_cols(max_row=4, min_col=1, max_col=2):print(i)for j in i:print(j.value)print("不指定max_row:")
# 按行获取值,缺省max_row
for i in sheet.iter_cols(min_row=2, min_col=1, max_col=2):print(i)for j in i:print(j.value)print("不指定min_col:")
# 按行获取值,缺省min_row
for i in sheet.iter_cols(min_row=2, max_row=4, max_col=2):print(i)for j in i:print(j.value)print("不指定max_col:")
# 按行获取值,缺省max_row
for i in sheet.iter_cols(min_row=2, max_row=4, min_col=1):print(i)for j in i:print(j.value)

3、sheet.rows和sheet.columns

sheet.rows 获取表格中所有行数据;
sheet.columns获取表格中所有列数据。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook["花名册"] # 根据表名获取表格print("sheet.rows获取所有行数据:")
# 按行获取值
for i in sheet.rows:print(i)for j in i:print(j.value)print("sheet.columns获取所有列数据:")
# 按列获取值
for i in sheet.columns:print(i)for j in i:print(j.value)

4、插入空行和空列

插入空行和空列的格式如下:
sheet.insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的位置插入,如果amount不设置则默认插入一行;
sheet.insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的位置插入,如果amount不设置则默认插入一列。

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook['花名册'] # 根据表名获取表格sheet.insert_rows(idx=3, amount=2) #第三行位置插入两行
sheet.insert_cols(idx=2, amount=1) #第二列位置插入一列savePath = r'D:\王者小学2.xlsx'
workbook.save(savePath) # 另存为D:\王者小学2.xlsx

5、删除行和列

删除行和列的格式如下:
sheet.delete_rows(idx=数字编号, amount=要删除的行数),删除的行数是在idx行数的位置
sheet.delete_cols(idx=数字编号, amount=要删除的列数),删除的列数是在idx行数的位置

from openpyxl import load_workbook
filePath = r'D:\王者小学2.xlsx' # 文件路径
workbook = load_workbook(filePath) #打开excel文件
sheet = workbook['花名册'] # 根据表名获取表格sheet.delete_rows(idx=3, amount=2)
sheet.delete_cols(idx=2, amount=1)savePath = r'D:\王者小学2.xlsx'
workbook.save(savePath) # 另存为D:\王者小学2.xlsx

6、创建新的sheet表

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) # 打开excel文件workbook.create_sheet("身高") # 创建新的身高表print(workbook.sheetnames)
sheet = workbook.worksheets[2]
data = [['学号', '身高'],['1', '168'],['2', '181'],['3', '160'],['4', '160'],['5', '160'],['6', '170'],['7', '190'],
]
for row in data:sheet.append(row)workbook.save(filePath) # 保存源文件

7、删除sheet表

del workbook[‘表名’]:根据表名删除
workbook.remove(sheet表):删除某个sheet表对象;

from openpyxl import load_workbook
filePath = r'D:\王者小学.xlsx' # 文件路径
workbook = load_workbook(filePath) # 打开excel文件
print(workbook.sheetnames)
# 方法一
del workbook['身高']
# 方法二
# sheet = workbook['身高']
# workbook.remove(sheet) #删除身高表
print(workbook.sheetnames)
workbook.save(filePath) # 保存为源文件

8、新建Excel与修改sheet表名

from openpyxl import Workbook
workbook = Workbook()
# 保存
workbook.save(filename=r"D:\新建Excel.xlsx")

在这里插入图片描述

from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
sheet.title = "我是表格" #设置表格的标题为我是表格
workbook.save(filename=r"D:\新建Excel.xlsx")

在这里插入图片描述

9、设置表格样式与单元格属性

'''
我们总结下上面用到的知识点:修改字体样式:Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)单元格颜色填充:PatternFill(fill_type=填充样式,start_color=开始颜色, end_color=结束颜色)单元格对齐方式:Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)
水平对齐:‘distributed’,‘justify’,‘center’,‘leftfill’, ‘centerContinuous’,‘right,‘general’;
垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’;设置边框样式:
Side(style=边线样式,color=边线颜色)
Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
style参数的种类: 'double, ‘mediumDashDotDot’, ‘slantDashDot’,‘dashDotDot’,‘dotted’,‘hair’, 'mediumDashed, ‘dashed’, ‘dashDot’, ‘thin’,‘mediumDashDot’,‘medium’,
'''from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, fills, colors, Side# 导入表格数据
filePath = r"D:\2021年销售分析\全年数据.xlsx"
wb = load_workbook(filePath)# 操作单元格
ws = wb.active# 调整列宽
ws.column_dimensions["A"].width = 25
ws.column_dimensions["B"].width = 10
ws.column_dimensions["C"].width = 10
ws.column_dimensions["D"].width = 13
ws.column_dimensions["E"].width = 35
ws.column_dimensions["F"].width = 8
ws.column_dimensions["G"].width = 10# 设置单元格格式
# 设置字体格式
font = Font("微软雅黑", size=12, color=colors.BLACK, bold=False)# 单元格颜色填充
fill = PatternFill(fill_type="solid", start_color="CDCDCD", end_color="CDCDCD") #CDCDCD浅灰色# 单元格对齐方式
alignment = Alignment(horizontal="center", vertical="center", indent=0) #wrap_text=True文字换行,shrink_to_fit=True自适应宽度# 单元格边框
bd = Border(left=Side(border_style="thin", color=colors.BLACK),right=Side(border_style="thin", color=colors.BLACK),top=Side(border_style="thin", color=colors.BLACK),bottom=Side(border_style="thin", color=colors.BLACK),outline=Side(border_style="thin", color=colors.BLACK),vertical=Side(border_style="thin", color=colors.BLACK),horizontal=Side(border_style="thin", color=colors.BLACK))# 遍历数据
for row in ws.rows:for cell in row:cell.font = fontcell.fill = fillcell.alignment = alignmentcell.border = bd# 设置表头字体格式
ft = Font("宋体", size=12, color=colors.BLUE, bold=True) # italic=True斜体
ws["A1"].font = ft
ws["B1"].font = ft
ws["C1"].font = ft
ws["D1"].font = ft
ws["E1"].font = ft
ws["F1"].font = ft
ws["G1"].font = ftsavePath = r"D:\2021年销售分析\全年数据-格式调整.xlsx"
# 保存数据
wb.save(savePath)

在这里插入图片描述

相关文章:

python使用openpyxl处理excel

文章目录 一、写在前面1、安装openpyxl2、认识excel窗口 二、基本使用1、打开excel2、获取sheet表格3、获取sheet表格 尺寸4、获取单元格数据5、获取区域单元格数据6、sheet.iter_rows()方法7、修改单元格的值8、向表格中插入行数据9、实战&#xff1a;合并多个excel 三、获取E…...

【JavaWeb后端学习笔记】Mybatis基础操作以及动态SQL(增、删、改、查)

Mybatis 0、环境准备0.1 准备数据库表emp&#xff1b;0.2 准备SpringBoot工程0.3 配置文件中引入数据库连接信息0.4 创建对应的实体类0.5 准备Mapper接口 1、MyBatis基础操作1.1 删除1.2 新增&#xff08;主键返回&#xff09;1.3 更新1.4 查询&#xff08;解决字段名与类属性名…...

基于MATLAB野外观测站生态气象数据处理分析实践应用

1.本课程基于MATLAB语言 2.以实践案例为主&#xff0c;提供所有代码 3.原理与操作结合 4.布置作业&#xff0c;答疑与拓展 示意图&#xff1a; 以野外观测站高频时序生态气象数据为例&#xff0c;基于MATLAB开展上机操作&#xff1a; 1.不同生态气象要素文件的数据读写与批处理…...

IP 地理位置定位技术原理概述

本文深入探讨 IP 地理位置定位技术的原理。介绍了 IP 地址的基本概念及其在网络中的作用&#xff0c;随后阐述了基于数据库查询、基于网络拓扑分析以及基于机器学习算法的三种主要 IP 地理位置定位技术原理中的基于IP数据库查询。 IP 地址基础 IP 地址是互联网协议&#xff0…...

C语言(分支结构)

问题引出 我们在程序设计往往会遇到如下的问题&#xff0c;比如下的函数的计算。 也就是我们是必须要通过一个条件的结果来选择下一步的操作&#xff0c;算法上属于一个分支结构&#xff0c;C语言中实现分支结构主要使用if语句。 条件判断 根据某个条件成立与否&#xff0c…...

批量将不同的工作簿合并到同一个Excel文件

批量将不同的工作簿合并到同一个Excel文件 下面是一个示例&#xff0c;展示如何批量将不同的工作簿合并到同一个Excel文件&#xff0c;并生成模拟数据。我们将使用 Python 的 pandas 库来完成这个任务。具体步骤如下&#xff1a; 步骤 1: 安装必要的库 首先确保你已安装 pan…...

详解AI网关助力配电房实现智能化管控应用

​对于一些建设年份久远的老旧配电房&#xff0c;由于配套降温散热设施设备不完善、线路设备老化等因素&#xff0c;极易出现因环境过热而影响设备正常稳定运行&#xff0c;进而导致电气故障甚至火灾等事故产生。 基于AI网关的配电房智能监控及管理 针对配电房的实时安全监测及…...

2025美赛数学建模常用数据库网站大全

优秀模板写作红宝书数学模型获取——更多资料请点击下方名片进群获取。 一、可以查询美国各个领域经济指标的网站: olap.epsnet.com.cnhttps://www.ers.usda.gov/data-products/rice-yearbook/www.ers.usda.govU.S. Energy Information Administration (EIA) www.eia.govhttp…...

Wordpress设置固定链接形式后出现404错误

比如固定连接设置为 /archives/%post_id%.html 这种形式&#xff0c;看起来比较舒服。对搜索引擎也友好。 出现404需要设置伪静态...

我最近在干什么【1】

前言 打算开一个新系列&#xff0c;偏休闲点的&#xff0c;不是完整全面的技术分享&#xff0c;话题还是聚焦个人成长&#xff08;学的技术、了解到的信息、看的书……&#xff09; 方面。文章偏意识流点&#xff0c;单纯分享我最近在干什么&#xff0c;不定期更新&#xff0c…...

[Vue3]computed原理

Computed原理 不管在是 Vue 2 还是在 Vue 3 中&#xff0c;对 computed 本身的实现原理基本都是一样的。当使用 computed 计算属性时&#xff0c;组件初始化会对每一个计算属性都创建对应的 watcher , 然后在第一次调用自己的 getter 方法时&#xff0c;收集计算属性依赖的所有…...

Vue工程化开发中各文件的作用

1.main.js文件 main.js文件的主要作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html。...

【c++笔试强训】(第三十一篇)

目录 最⻓回⽂⼦序列&#xff08;动态规划-区间dp&#xff09; 题目解析 讲解算法原理 编写代码 添加字符&#xff08;字符串&#xff09; 题目解析 讲解算法原理 编写代码 最⻓回⽂⼦序列&#xff08;动态规划-区间dp&#xff09; 题目解析 1.题目链接&#xff1a;最…...

Go 1.19.4 HTTP编程-Day 20

1. HTTP协议 1.1 基本介绍 HTTP协议又称超文本传输协议&#xff0c;属于应用层协议&#xff0c;在传输层使用TCP协议。HTTP协议属是无状态的&#xff0c;对事务处理没有记忆能力&#xff0c;如果需要保存状态需要引用其他技术&#xff0c;如Cookie。HTTP协议属是无连接的&…...

MySQL 8.0 的主主复制(双向复制)

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主主复制&#xff08;双向复制&#xff09;&#xff0c;步骤与 Linux 类似&#xff0c;但有一些特定的配置和路径需要注意。以下是详细的简化步骤&#xff1a; 1. 使用 root 用户登录 确保你以 root 用户登录到 MySQL …...

四、自然语言处理_03LSTM与GRU

0、前言 随着循环神经网络&#xff08;RNN&#xff09;在各种序列数据处理任务中被广泛应用&#xff0c;研究人员逐渐发现了其在处理长序列数据时会容易出现梯度消失&#xff08;vanishing gradient&#xff09;和梯度爆炸&#xff08;exploding gradient&#xff09;问题&…...

磁盘系列基础知识(一):硬盘;IDE;ATA;SATA;AHCI;SCSI;SAS

磁盘系列基础知识&#xff08;一&#xff09;硬盘 IDE ATA SATA AHCI SCSI SAS 硬盘厂家 西部数据Western Digital/WD. 希捷 SEAGATE、三星 SAMSUNG、东之 Toshiba、英特尔 Intel、金士顿 Kingston、闪迪 SanDisk、 英睿达 Crucial、浦科特 Plextor 硬盘类别 HDD &#xff08;…...

taro小程序进入腾讯验证码

接入原因 昨天突然晚上有人刷我们公司的登录发送短信接口&#xff0c;紧急将小程序的验证码校验更新上去了 接下来就是我们的接入方法&#xff0c;其实很简单&#xff0c;不过有时候可能大家着急就没有仔细看文档&#xff0c;腾讯验证码文档微信小程序地址&#xff0c;注意这里…...

原子类相关

原子引用 JUC 并发包提供了&#xff1a; AtomicReferenceAtomicMarkableReferenceAtomicStampedReference AtomicReference 使用举例 public interface DecimalAccount {// 获取余额BigDecimal getBalance();// 取款void withdraw(BigDecimal amount);/*** 方法内会启动 10…...

RabbitMQ 客户端 连接、发送、接收处理消息

RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务&#xff0c;不是像其他服务器一样&#xff0c;负责逻辑处理&#xff0c;然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息&#xff0c; 第一步&a…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?

系列回顾&#xff1a; 在上一篇《React核心概念&#xff1a;State是什么&#xff1f;》中&#xff0c;我们学习了如何使用useState让一个组件拥有自己的内部数据&#xff08;State&#xff09;&#xff0c;并通过一个计数器案例&#xff0c;实现了组件的自我更新。这很棒&#…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...