python使用openpyxl处理excel

news2024/12/27 5:13:42

文章目录

  • 一、写在前面
    • 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_workbook

filePath = 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.active
	header = ['销售日期', '员工工号', '销售员', '货号', '销售单号', '销量', '销售额']
	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 = font
		cell.fill = fill
		cell.alignment = alignment
		cell.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 = ft

savePath = r"D:\2021年销售分析\全年数据-格式调整.xlsx"
# 保存数据
wb.save(savePath)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spire.PDF for .NET【页面设置】演示:旋放大 PDF 边距而不改变页面大小

PDF 页边距是正文内容和页面边缘之间的空白。与 Word 不同&#xff0c;PDF 文档中的页边距不易修改&#xff0c;因为 Adobe 不提供任何功能供用户自由操作页边距。但是&#xff0c;您可以更改页面缩放比例&#xff08;放大/压缩内容&#xff09;或裁剪页面以获得合适的页边距。…

SpringMVC:参数传递之日期类型参数传递

环境准备和参数传递请见&#xff1a;SpringMVC参数传递环境准备 日期类型比较特殊&#xff0c;因为对于日期的格式有N多中输入方式&#xff0c;比如: 2088-08-182088/08/1808/18/2088… 针对这么多日期格式&#xff0c;SpringMVC该如何接收&#xff0c;它能很好的处理日期类…

驱动篇的开端

准备 在做之后的动作前&#xff0c;因为win7及其以上的版本默认是不支持DbgPrint&#xff08;大家暂时理解为内核版的printf&#xff09;的打印&#xff0c;所以&#xff0c;为了方便我们的调试&#xff0c;我们先要修改一下注册表 创建一个reg文件然后运行 Windows Registr…

Spring 那些事【2】SpringCache 简介及应用?

一、简介 SpringCache 是Spring 提供的一整套的缓存解决方案&#xff0c;他不是具体的缓存实现&#xff0c;它只提供了一整套的接口和代码规范、配置、注解等&#xff0c;用于整合各种缓存方案。 Spring 从 3.1 开始定义了 org.springframework.cache.Cache 和 org.springfra…

C语言:指针与数组

一、. 数组名的理解 int arr[5] { 0,1,2,3,4 }; int* p &arr[0]; 在之前我们知道要取一个数组的首元素地址就可以使用&arr[0]&#xff0c;但其实数组名本身就是地址&#xff0c;而且是数组首元素的地址。在下图中我们就通过测试看出&#xff0c;结果确实如此。 可是…

2023年04-至今:宏图一号L2级系统几何校正影像(1、3、5m)

目录 简介 摘要 代码 网址推荐 机器学习 2023年04-至今&#xff1a;宏图一号L2级系统几何校正影像&#xff08;1、3、5m&#xff09; 简介 作为航天宏图“女娲星座”建设计划的首发卫星&#xff0c;航天宏图-1号可获取0.5米-5米的分辨率影像&#xff0c;具备高精度地形测…

挑战用React封装100个组件【009】

Hello&#xff0c;大家好&#xff0c;今天我挑战的组件是这样的&#xff01; 欢迎大家把项目拉下来使用哦&#xff01; 项目地址&#xff1a; https://github.com/hismeyy/react-component-100 今天还是用到了react-icons。这里就不过多介绍啦&#xff0c;大家可以在前面的挑战…

【每日刷题】Day162

【每日刷题】Day162 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 3302. 字典序最小的合法序列 - 力扣&#xff08;LeetCode&#xff09; 2. 44. 通配符匹配 - 力扣&…

什么工具可以解决团队协作障碍?

团队协作是现代工作环境中至关重要的一部分&#xff0c;但在实际操作中&#xff0c;很多团队面临着协作中的各种障碍。这些障碍不仅影响工作效率&#xff0c;也可能阻碍团队成员之间的合作与信任建设。根据Patrick Lencioni在《团队协作的五大障碍》中的理论&#xff0c;团队协…

基于Java Springboot线上约拍摄影预约微信小程序

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui uniapp 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信开发者工…

消息中间件-Kafka1-实现原理

消息中间件-Kafka 一、kafka简介 1、概念 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以…

使用 Python 中的 TripoSR 根据图像创建 3D 对象

使用 Python 中的 TripoSR 根据图像创建 3D 对象 1. 效果图2. 步骤图像到 3D 对象设置环境导入必要的库设置设备创建计时器实用程序上传并准备图像处理输入图像生成 3D 模型并渲染下载.stl 文件展示结果3. 源码4. 遇到的问题及解决参考这篇博客将引导如何使用Python 及 TripoSR…

【SKFramework框架核心模块】3-3、调试器

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

03-13、SpringCloud Alibaba第十三章,升级篇,服务降级、熔断和限流Sentinel

SpringCloud Alibaba第十三章&#xff0c;升级篇&#xff0c;服务降级、熔断和限流Sentinel 一、Sentinel概述 1、Sentinel是什么 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保…

QT实战-qt各种菜单样式实现

本文主要介绍了qt普通菜单样式、带选中样式、带子菜单样式、超过一屏幕菜单样式、自定义带有滚动条的菜单样式&#xff0c; 先上图如下&#xff1a; 1.普通菜单样式 代码&#xff1a; m_pmenu new QMenu(this);m_pmenu->setObjectName("quoteListMenu"); qss文…

健康养生生活

在快节奏的现代生活中&#xff0c;健康养生愈发成为人们关注的焦点。它不仅是一种生活方式&#xff0c;更是对生命质量的珍视与呵护。 健康养生&#xff0c;饮食为先。合理的膳食结构是维持身体健康的基石。我们应确保每餐营养均衡&#xff0c;增加蔬菜、水果、全谷物以及优质蛋…

2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序

2023年华数杯全国大学生数学建模 B题 不透明制品最优配色方案设计 原题再现&#xff1a; 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色存在一定的局限性…

C语言实验 循环结构2

时间:2024.12.3 一、实验 7-1 求符合给定条件的整数集 #include<stdio.h> int main(){int a,b,s,g; scanf("%d",&a);int h=0; for(int i=a;i<=a+3;i++){for(int j=a;j<=a+3;j++){for(int k=a;k<=a+3;k++){if((i!=j)&&(i!=k)&&…

Android10 设备死机的问题分析和解决

最近客户反馈一个问题&#xff0c;设备偶现死机。最后解决&#xff0c;在此记录。 目录 一死机的现象 二死机的类型 三 死机问题分析 1 死机现象的梳理 2 死机日志 1&#xff09;日志分析一 2 日志分析二&#xff08;正确方案&#xff09; 一死机的现象 设备死机&#x…

koa中间件

文章目录 1. koa中间件简介2. 中间件类型1. 应用级中间件2. 路由级中间件3. 错误处理中间件4. 第三方中间件 3.中间件执行流程 1. koa中间件简介 在Koa中&#xff0c;中间件呈现为一个异步函数&#xff0c;该函数支持 async/await 语法&#xff0c;它接收两个参数&#xff1a;…