【办公类-53-04】20250209Python模仿制作2024学年第二学期校历

news2025/2/12 2:09:14

背景需求:

马上开学了,又要制作校历(删划节假日)。之前我都是用网络的图片,然后在PPT里修改。

存在问题:

网络校历是从周日开始的,但日常我们老师做教案,都是默认从周一到周五(周六周日)

所以这学期,我想用Python模仿网上图片,生成EXCEL的校历图片,同时将“周日”放到最后一列显示,确保“周一”在第一列。

1.0版本——与网络版一样(周日开始)

代码展示

'''
模仿制作2025年2月下学期的校历(只有日期)周日在前)
星火讯飞、阿夏
20250209
'''
import datetime
import openpyxl
from openpyxl.styles import Alignment, PatternFill
import time

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=1

# 创建一个新的Excel工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 设置标题行
title_row = ["周次", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
sheet.append(title_row)

# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)

# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):
    date_list.append([])  # 添加一个空格行
current_day = start_date

while current_day <= end_date:
    date_list.append([current_day])
    current_day += datetime.timedelta(days=1)

print(date_list)

# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):
    # 获取当前周的日期列表
    week_dates = date_list[i:i+7]
    
    # 在A列中添加周次
    sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"
    sheet.cell(row=current_week + 1, column=1).alignment = Alignment(horizontal='center', vertical='center')
    
    # 在正确的单元格中添加日期
    for j in range(len(week_dates)):
        cell = sheet.cell(row=current_week + 1, column=j + 2)
        
        # 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”
        if week_dates[j]:  # Check if the list is not empty
            if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
                cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"
            elif week_dates[j][0].day == 1:
                cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"
            else:
                cell.value = f"{week_dates[j][0].day}"
        
        cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 更新周数并移动到下一周
    current_week += 1

# 保存工作簿
workbook.save(path + fr"\周日在前{title}.xlsx")
time.sleep(2)

在第一个日期(2025.2.17)前面添加1个空格

原始表就做好了(从周日开始。2.16是周日,空,不写)

继续把表格美化一下,和网络底纹一样


'''
模仿制作2025年2月下学期的校历(只有日期)周日在前,美化
星火讯飞、阿夏
20250209
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letter

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=1

# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active

# 设置标题行
# title_row = ["周次",  "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
# title_row = ["周次",  "一", "二", "三", "四", "五", "六","日",]
title_row = ["周次", "日", "一", "二", "三", "四", "五", "六"]
sheet.append(title_row)

# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)

# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):
    date_list.append([])  # 添加一个空格行

current_day = start_date

while current_day <= end_date:
    date_list.append([current_day])
    current_day += datetime.timedelta(days=1)

# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):
    # 获取当前周的日期列表
    week_dates = date_list[i:i+7]
    
    # 在A列中添加周次
    sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"
    cell = sheet.cell(row=current_week + 1, column=1)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 设置A列单元格边框样式为黑色实线
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    cell.font = Font(size=18)
    
    # 在正确的单元格中添加日期
    for j in range(len(week_dates)):
        cell = sheet.cell(row=current_week + 1, column=j + 2)
        
        # 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”
        if week_dates[j]:  # Check if the list is not empty
            if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
                cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"
            elif week_dates[j][0].day == 1:
                cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"
            else:
                cell.value = f"{week_dates[j][0].day}"
        
        cell.alignment = Alignment(horizontal='center', vertical='center')

        
        # 根据月份设置单元格底纹颜色
        month = week_dates[j][0].month
        if month == 2:
            cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid")  # 浅黄色
        elif month == 3:
            cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")  # 浅红色
        elif month == 4:
            cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")  # 浅绿色
        elif month == 5:
            cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid")  # 浅灰色
        elif month == 6:
            cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid")  # 浅橘色
        
        # 设置单元格边框样式为黑色实线
        thin_border = Border(left=Side(style='thin', color='000000'), 
                             right=Side(style='thin', color='000000'), 
                             top=Side(style='thin', color='000000'), 
                             bottom=Side(style='thin', color='000000'))
        cell.border = thin_border
        # 设置字体大小为18磅
        if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
            cell.font = Font(size=13)
            cell.alignment = Alignment(horizontal='center', vertical='center')
        else:
            cell.font = Font(size=18)
            cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 更新周数并移动到下一周
    current_week += 1

# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):
    cell = sheet.cell(row=1, column=col)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    if col >= 1 and col <= 8:  # Apply blue fill to A1-H1
        cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")  # 浅蓝色
        cell.font = Font(size=18)



# A列第二行开始,单元格的填充底色与B列单元格颜色相同
for row in range(2, sheet.max_row + 1):
    for col in range(1, 2):  # Apply fill from B column to A-H columns
        b_cell = sheet.cell(row=row, column=col + 1)
        a_cell = sheet.cell(row=row, column=col)
        a_cell.fill = b_cell.fill.copy()  # Use copy() to avoid unhashable type error

# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 1):
    sheet.row_dimensions[row].height = 30

for col in range(1, sheet.max_column + 1):
    column_letter = get_column_letter(col)
    sheet.column_dimensions[column_letter].width = 10  # Set width to a reasonable value for better readability

#  在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
sheet.cell(row=1, column=1).font = Font(size=18)
sheet.cell(row=1, column=1).border = thin_border
sheet.cell(row=1, column=1).fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")  # 浅蓝色


# 保存工作簿
workbook.save(path + fr"\周日在前美化{title}.xlsx")
time.sleep(2)

代码展示


'''
模仿制作2025年2月下学期的校历(只有日期)
星火讯飞、阿夏
20250209
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letter

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=0

# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active

# 设置标题行
# title_row = ["周次",  "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
title_row = ["周次",  "一", "二", "三", "四", "五", "六","日",]
sheet.append(title_row)

# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)

# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):
    date_list.append([])  # 添加一个空格行

current_day = start_date

while current_day <= end_date:
    date_list.append([current_day])
    current_day += datetime.timedelta(days=1)

# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):
    # 获取当前周的日期列表
    week_dates = date_list[i:i+7]
    
    # 在A列中添加周次
    sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"
    cell = sheet.cell(row=current_week + 1, column=1)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 设置A列单元格边框样式为黑色实线
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    cell.font = Font(size=18)
    
    # 在正确的单元格中添加日期
    for j in range(len(week_dates)):
        cell = sheet.cell(row=current_week + 1, column=j + 2)
        
        # 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”
        if week_dates[j]:  # Check if the list is not empty
            if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
                cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"
            elif week_dates[j][0].day == 1:
                cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"
            else:
                cell.value = f"{week_dates[j][0].day}"
        
        cell.alignment = Alignment(horizontal='center', vertical='center')
        
        # 根据月份设置单元格底纹颜色
        month = week_dates[j][0].month
        if month == 2:
            cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid")  # 浅黄色
        elif month == 3:
            cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")  # 浅红色
        elif month == 4:
            cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")  # 浅绿色
        elif month == 5:
            cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid")  # 浅灰色
        elif month == 6:
            cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid")  # 浅橘色
        
        # 设置单元格边框样式为黑色实线
        thin_border = Border(left=Side(style='thin', color='000000'), 
                             right=Side(style='thin', color='000000'), 
                             top=Side(style='thin', color='000000'), 
                             bottom=Side(style='thin', color='000000'))
        cell.border = thin_border
        # 设置字体大小为18磅
        if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
            cell.font = Font(size=13)
            cell.alignment = Alignment(horizontal='center', vertical='center')
        else:
            cell.font = Font(size=18)
            cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 更新周数并移动到下一周
    current_week += 1

# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):
    cell = sheet.cell(row=1, column=col)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    if col >= 1 and col <= 8:  # Apply blue fill to A1-H1
        cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")  # 浅蓝色
        cell.font = Font(size=18)



# A列第二行开始,单元格的填充底色与B列单元格颜色相同
for row in range(2, sheet.max_row + 1):
    for col in range(1, 2):  # Apply fill from B column to A-H columns
        b_cell = sheet.cell(row=row, column=col + 1)
        a_cell = sheet.cell(row=row, column=col)
        a_cell.fill = b_cell.fill.copy()  # Use copy() to avoid unhashable type error

# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 1):
    sheet.row_dimensions[row].height = 30

for col in range(1, sheet.max_column + 1):
    column_letter = get_column_letter(col)
    sheet.column_dimensions[column_letter].width = 10  # Set width to a reasonable value for better readability

#  在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
sheet.cell(row=1, column=1).font = Font(size=18)
sheet.cell(row=1, column=1).border = thin_border
sheet.cell(row=1, column=1).fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")  # 浅蓝色


# 保存工作簿
workbook.save(path + fr"\{title}.xlsx")
time.sleep(2)

下一步就是查找不上班的日期

可以看到第10周五天,第10周周日5月27日与第11周的三天上班合并,第19周与第20周(只有1天)合并为6天,一共可以做19周的计划

2.0版本——实际需要的央视(周一开始,双休日、假日空白)

代码展示


'''
模仿制作2025年2月下学期的校历(标注节假日)
星火讯飞、阿夏
202502010
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.page import PageMargins

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历(阿夏20250209)'
# 起始日期前空几天
m=0

# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active

# 设置页边距(单位为英寸)

# 设置页边距(单位为厘米)
left_margin_cm = 1.3
right_margin_cm = 1.3
top_margin_cm = 2
bottom_margin_cm = 2

# 将厘米转换为英寸
left_margin_inch = left_margin_cm * 0.393701
right_margin_inch = right_margin_cm * 0.393701
top_margin_inch = top_margin_cm * 0.393701
bottom_margin_inch = bottom_margin_cm * 0.393701

# 设置页边距(单位为英寸)
margins = PageMargins(left=left_margin_inch, right=right_margin_inch, top=top_margin_inch, bottom=bottom_margin_inch)

# margins = PageMargins(left=3.322, right=3.322, top=5.08, bottom=5.08)
sheet.page_margins = margins

# 设置标题行
# title_row = ["周次",  "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
title_row = ["周次",  "一", "二", "三", "四", "五", "六","日",]
sheet.append(title_row)

# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)

# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):
    date_list.append([])  # 添加一个空格行

current_day = start_date

while current_day <= end_date:
    date_list.append([current_day])
    current_day += datetime.timedelta(days=1)

# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):
    # 获取当前周的日期列表
    week_dates = date_list[i:i+7]
    
    # 在A列中添加周次
    sheet.cell(row=current_week + 1, column=1).value = f"第{current_week}周"
    cell = sheet.cell(row=current_week + 1, column=1)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    
    # 设置A列单元格边框样式为黑色实线
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    cell.font = Font(size=16)
    
    # 在正确的单元格中添加日期
    for j in range(len(week_dates)):
        cell = sheet.cell(row=current_week + 1, column=j + 2)
        
        # 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”
        if week_dates[j]:  # Check if the list is not empty
            if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
                cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"
            elif week_dates[j][0].day == 1:
                cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"
                if week_dates[j][0].year == 2025 and week_dates[j][0].month == 5 and week_dates[j][0].day == 1:
                    cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}劳动"      
                
                
            else:
                cell.value = f"{week_dates[j][0].day}"
                if week_dates[j][0].year == 2025 and week_dates[j][0].month == 4 and week_dates[j][0].day == 4:
                    cell.value = f"{week_dates[j][0].day}清明"
                elif week_dates[j][0].year == 2025 and week_dates[j][0].month == 5 and week_dates[j][0].day == 31:
                    cell.value = f"{week_dates[j][0].day}端午"
        
        cell.alignment = Alignment(horizontal='center', vertical='center')

        # 根据月份设置单元格底纹颜色
        month = week_dates[j][0].month
        day = week_dates[j][0].day
        if month == 2:
            cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid")  # 浅黄色
        elif month == 3:
            cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")  # 浅红色
        elif month == 4:
            if day !=4 :                # 4月4日清明
                cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")  # 浅绿色
        elif month == 5:           
            if not (day == 1 or day == 2 or day == 3 or day == 4 or day == 5):      
                cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid")  # 浅灰色
        elif month == 6:
            if not (day == 1 or day == 2 ):    
                cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid")  # 浅橘色
        
        # 设置单元格边框样式为黑色实线
        thin_border = Border(left=Side(style='thin', color='000000'), 
                             right=Side(style='thin', color='000000'), 
                             top=Side(style='thin', color='000000'), 
                             bottom=Side(style='thin', color='000000'))
        cell.border = thin_border
        # 设置字体大小为18磅
        if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:
            cell.font = Font(size=13)
            cell.alignment = Alignment(horizontal='center', vertical='center')
        else:
            cell.font = Font(size=16)
            cell.alignment = Alignment(horizontal='center', vertical='center')
        
        # 在G2-H2开始的列的单元格都填充为白色
        for row in range(2, sheet.max_row + 1):
            for col in range(7, 9):  # Apply white fill to G2-H2 columns
                cell = sheet.cell(row=row, column=col)
                cell.fill = PatternFill(start_color="FFFFFF", end_color="FFFFFF", fill_type="solid")  # White color

        
        # # 4月27日(周日)换班,4月浅绿色
        # if week_dates[j][0].year == 2025 and week_dates[j][0].month == 4 and week_dates[j][0].day == 27:
        #     print("4月27日已找到")
        #     # 重新填充一个特定单元格为浅绿色
        specific_cell = 'H11' 
        sheet[specific_cell].fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")
            # cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")  # 浅绿色
    
    
    # 更新周数并移动到下一周
    current_week += 1



# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):
    cell = sheet.cell(row=1, column=col)
    cell.alignment = Alignment(horizontal='center', vertical='center')
    thin_border = Border(left=Side(style='thin', color='000000'), 
                         right=Side(style='thin', color='000000'), 
                         top=Side(style='thin', color='000000'), 
                         bottom=Side(style='thin', color='000000'))
    cell.border = thin_border
    if col >= 1 and col <= 8:  # Apply blue fill to A1-H1
        cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")  # 浅蓝色
        cell.font = Font(size=16)



# A列第二行开始,单元格的填充底色与B列单元格颜色相同
# for row in range(2, sheet.max_row + 1):
#     for col in range(1, 2):  # Apply fill from B column to A-H columns
#         b_cell = sheet.cell(row=row, column=col + 1)
#         a_cell = sheet.cell(row=row, column=col)
#         a_cell.fill = b_cell.fill.copy()  # Use copy() to avoid unhashable type error

# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 2):
    sheet.row_dimensions[row].height = 30

for col in range(1, sheet.max_column + 1):
    column_letter = get_column_letter(col)
    sheet.column_dimensions[column_letter].width = 11.5 # Set width to a reasonable value for better readability




#  在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
# 字号,加粗
sheet.cell(row=1, column=1).font = Font(size=18, bold=True)
# 框线
# sheet.cell(row=1, column=1).border = thin_border
# 填充白色
sheet.cell(row=1, column=1).fill = PatternFill(start_color="FFFFFF", end_color="FFFFFF", fill_type="solid") 



# 保存工作簿
workbook.save(path + fr"\{title}.xlsx")
time.sleep(2)


# import pandas as pd
# from fpdf import FPDF

# # 读取Excel文件
# excel_file = path + fr"\{title}.xlsx"
# df = pd.read_excel(excel_file)

# # 创建PDF对象
# pdf = FPDF()
# pdf.add_page()
# pdf.set_font("Arial", size=12)

# # 添加表格数据到PDF
# for i in range(len(df)):
#     line = df.iloc[i].tolist()
#     text = ' | '.join([str(x) for x in line])
#     pdf.cell(200, 10, txt=text, ln=True)

# # 保存PDF文件
# pdf_file = path + fr"\{title}.pdf"
# pdf.output(pdf_file)
# print(f"PDF file has been created: {pdf_file}")

在excel里另存为pdf(python  把excel转PDF有问题)

不同浏览器效果

CAJ

谷歌浏览器

360极速浏览器

火狐浏览器

Adobe Acrobat DC

最终效果

发到学校群里

因为图片里面有彩色的底纹,必须用领导的彩色打印机。

所以我打印了二十份,粘在墙上。需要的人自己来拿

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

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

相关文章

11vue3实战-----封装缓存工具

11vue3实战-----封装缓存工具 1.背景2.pinia的持久化思路3.以localStorage为例解决问题4.封装缓存工具 1.背景 在上一章节&#xff0c;实现登录功能时候&#xff0c;当账号密码正确&#xff0c;身份验证成功之后&#xff0c;把用户信息保存起来&#xff0c;是用的pinia。然而p…

Unity 基础编程

在这个练习中将新建unity脚本&#xff0c;控制player的运动与转动&#xff0c;实现用代码检测碰撞与删除物体。 该练习将应用附件中的项目文件&#xff0c;该文件与Unity快速练习的文件是同一个项目文件。 一、构建Player运动脚本 该部分将构建一个在场景中由玩家控制游戏物…

Spring Boot接入Deep Seek的API

1&#xff0c;首先进入deepseek的官网&#xff1a;DeepSeek | 深度求索&#xff0c;单击右上角的API开放平台。 2&#xff0c;单击API keys&#xff0c;创建一个API&#xff0c;创建完成务必复制&#xff01;&#xff01;不然关掉之后会看不看api key&#xff01;&#xff01;&…

从Word里面用VBA调用NVIDIA的免费DeepSeekR1

看上去能用而已。 选中的文字作为输入&#xff0c;运行对应的宏即可&#xff1b;会先MSGBOX提示一下&#xff0c;然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…

C语言学习笔记:子函数的调用实现各个位的累加和

在C语言程序学习之初&#xff0c;我们都会学习如何打印 hello world&#xff0c;在学习时我们知道了int main&#xff08;&#xff09;是主函数&#xff0c;程序从main函数开始执行&#xff0c;这是流程控制的一部分内容。在主函数中我们想要实现一些功能&#xff0c;比如求各个…

grafana面板配置opentsdb

新增面板&#xff1a; 这里add-panel: 如果不是想新增面板而是想新增一行条目&#xff0c;则点击convert to row: 在新增的面板这里可以看到选择数据源 Aggregator&#xff1a;聚合条件&#xff0c;区分下第一行和第二行的aggregator&#xff0c;第一个是对指标值的聚合&…

2025年02月10日Github流行趋势

项目名称&#xff1a;dify 项目地址url&#xff1a;https://github.com/langgenius/dify项目语言&#xff1a;TypeScript历史star数&#xff1a;64707今日star数&#xff1a;376项目维护者&#xff1a;takatost, crazywoola, laipz8200, iamjoel, JohnJyong项目简介&#xff1a…

Ansible简单介绍及用法

一、简介 Ansible是一个简单的自动化运维管理工具&#xff0c;基于Python语言实现&#xff0c;由Paramiko和PyYAML两个关键模块构建&#xff0c;可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。 Ansible与Saltstack最大的区别是…

渗透利器工具:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)

Burp Suite 联动 XRAY 图形化工具.&#xff08;主动扫描被动扫描&#xff09; Burp Suite 和 Xray 联合使用&#xff0c;能够将 Burp 的强大流量拦截与修改功能&#xff0c;与 Xray 的高效漏洞检测能力相结合&#xff0c;实现更全面、高效的网络安全测试&#xff0c;同时提升漏…

HTML-day1(学习自用)

目录 一、HTML介绍 二、常用的标签 1、各级标题&#xff08;h1-h6&#xff09; 2、段落标签&#xff08;p&#xff09; 3、文本容器&#xff08;span&#xff09; 4、图片标签&#xff08;img&#xff09; 5、超链接标签&#xff08;a&#xff09; 6、表格&#xff08;t…

Vue07

一、Vuex 概述 目标&#xff1a;明确Vuex是什么&#xff0c;应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具&#xff0c;状态就是数据。 大白话&#xff1a;Vuex 是一个插件&#xff0c;可以管理 Vue 通用的数据 (多组件共享的数据)。例如&#xff1a;购物车数…

Godot开发框架探索#2

前言 距离上次发文又又又隔了很长一段时间。主要原因还是因为思绪在徘徊&#xff0c;最近纠结的点有以下几个&#xff1a;1.渴求一个稳定的Godot开发框架&#xff1b;2.要不要使用更轻量的开发框架&#xff0c;或者直接写引擎&#xff1b; 3.对自己想做的游戏品类拿不定主意。…

deepseek实现私有知识库

前言 之前写了如何本地部署deepseek&#xff0c;已经可以私有化问答了&#xff0c;本地搭建deepseek实操&#xff08;ollama搭建&#xff0c;docker管理&#xff0c;open-webui使用&#xff09; 其中我觉得最厉害的还是这个模型蒸馏&#xff0c;使我们可以用很低的代价使用大模…

【探索未来科技】2025年国际学术会议前瞻

【探索未来科技】2025年国际学术会议前瞻 【探索未来科技】2025年国际学术会议前瞻 文章目录 【探索未来科技】2025年国际学术会议前瞻前言1. 第四届电子信息工程、大数据与计算机技术国际学术会议&#xff08; EIBDCT 2025&#xff09;代码示例&#xff1a;机器学习中的线性回…

大模型基本原理(四)——如何武装ChatGPT

传统的LLM存在几个短板&#xff1a;编造事实、计算不准确、数据过时等&#xff0c;为了应对这几个问题&#xff0c;可以借助一些外部工具或数据把AI武装起来。 实现这一思路的框架包括RAG、PAL、ReAct。 1、RAG&#xff08;检索增强生成&#xff09; LLM生成的内容会受到训练…

开发完的小程序如何分包

好几次了&#xff0c;终于想起来写个笔记记一下 我最开始并不会给小程序分包&#xff0c;然后我就各种搜&#xff0c;发现讲的基本上都是开发之前的小程序分包&#xff0c;可是我都开发完要发布了&#xff0c;提示我说主包太大需要分包&#xff0c;所以我就不会了。。。 好了…

java配置api,vue网页调用api从oracle数据库读取数据

一、主入口文件 1&#xff1a;java后端端口号 2&#xff1a;数据库类型 和 数据库所在服务器ip地址 3&#xff1a;服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1&#xff1a;column后变量名是数据库中存储的变量名 property的值是column值的…

iOS三方登录 - Facebook登录

引言 在出海APP的开发中&#xff0c;集成主流社交平台的三方登录已成为必不可少的一环。Facebook 作为全球最大的社交网络平台之一&#xff0c;其提供的 Facebook 登录功能能够大大简化用户注册和登录流程&#xff0c;提高用户体验&#xff0c;减少流失率。对于开发者而言&…

机器学习 - 理解偏差-方差分解

为了避免过拟合&#xff0c;我们经常会在模型的拟合能力和复杂度之间进行权衡。拟合能力强的模型一般复杂度会比较高&#xff0c;容易导致过拟合。相反&#xff0c;如果限制模型的复杂度&#xff0c;降低其拟合能力&#xff0c;又可能会导致欠拟合。因此&#xff0c;如何在模型…

深度学习01 神经网络

目录 神经网络 ​感知器 感知器的定义 感知器的数学表达 感知器的局限性 多层感知器&#xff08;MLP, Multi-Layer Perceptron&#xff09; 多层感知器的定义 多层感知器的结构 多层感知器的优势 偏置 偏置的作用 偏置的数学表达 神经网络的构造 ​神经网络的基本…