天津做网站多少钱,做外贸都有哪些好网站,培训 网站 模板,装潢设计软件作品展示 背景需求
上次23个班级班主任统计图书#xff0c;写在EXCEL内
【办公类-19-01】20240108图书统计登记表制作#xff08;23个班级#xff09;EXCEL复制表格并合并表格-CSDN博客文章浏览阅读693次#xff0c;点赞12次#xff0c;收藏7次。【办公类-19-01】202401…作品展示 背景需求
上次23个班级班主任统计图书写在EXCEL内
【办公类-19-01】20240108图书统计登记表制作23个班级EXCEL复制表格并合并表格-CSDN博客文章浏览阅读693次点赞12次收藏7次。【办公类-19-01】20240108图书统计登记表制作23个班级EXCEL复制表格并合并表格https://blog.csdn.net/reasonsummer/article/details/135473511提交后 每个班级的图书数量不一致 需求
1、删除多余的空行
2、在序号和书名中间加入“年级”“班级” 素材准备 全部代码 把每个EXCEL前面增加一列班级、一列年级。共生成25份
删除多余行
作者阿夏
时间2024年1月22日
from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.styles import Border, Side
import openpyxl
from docx import Document
import os
from docx.enum.text import WD_BREAK# 换页符号
from docx.enum.section import WD_SECTION
from docx.shared import Pt,Inches, Cm
#导入模块xlrd
import xlrd
import openpyxl
# import pandas as pd
import os
import time
import win32com.client as win32imagePathrC:\Users\jg2yXRZ\OneDrive\桌面\图书print(------------第1步读取原始文件-------------)# 新建一个”装N份word和PDF“的临时文件夹
imagePath1imagePathr\\02插入班级年级的班级图书
if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在os.makedirs(imagePath1) # 若图片文件夹不存在就创建# 指定要读取的文件夹路径
folder_path rC:\Users\jg2yXRZ\OneDrive\桌面\图书\01班主任提交的图书
# 获取文件夹内所有文件名
file_names os.listdir(folder_path)
# 拼接文件路径
doc_paths [os.path.join(folder_path, file_name) for file_name in file_names]
print(doc_paths)
# [C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大1班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大2班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大3班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大4班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大5班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大6班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\大7班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\小1班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\小2班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\小3班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌
# 面\\图书\\所有图书\\小4班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\小5班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图
# 书\\所有图书\\小6班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\小7班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所
# 有图书\\托1班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\托2班班级图书汇总表.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\测试.xlsx, C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\图书\\所有图书\\测试2.xlsx]print(------------第2步每个EXCEL插入两列班级年级-------------)
# 遍历所有的EXCLE添加班级列和年级列
for x in range(len(doc_paths)):# 读取Excel文件workbook openpyxl.load_workbook(r{}.format(doc_paths[x]))# 获取第一个工作表worksheet workbook.worksheets[0]# 插入两列grade[班级,年级]title[]# 提取标题班级cellsworksheet[A1]# 大1title1cells.value[6:8]# 大班组title2cells.value[6:7]班组title.append(title1)title.append(title2)print(title)# 写入两列 班级和年级for i in range(len(grade)):# 在A列后插入一列B并填写为小1班worksheet.insert_cols(2)# 在第2列前插入一列worksheet[B2]grade[i]# 先插入班级再插年级# 插入列的宽度worksheet.column_dimensions[B].width 10worksheet.column_dimensions[C].width 10# 获取行数row_count worksheet.max_row # 填写B列的单元格为小1班for row in range(3, row_count 1):alignment Alignment(horizontalcenter) worksheet.cell(rowrow, column2,valuetitle[i]).alignment alignment# 获取活动工作表ws1 workbook.active# 添加表格框线 假设你要设置的数据范围是第2行到第总行数1行第2列到第3列第2列for col in ws1.iter_cols(min_row3, max_rowrow_count 1, min_col2, max_col5): # 注意max_row应该是11因为你要包括第10行for cell in col:cell.border Border(leftSide(stylethin),rightSide(stylethin),topSide(stylethin),bottomSide(stylethin))# E列出版社和F列ISBN列宽变长 worksheet.column_dimensions[E].width 20worksheet.column_dimensions[F].width 20# 标签名字改成大1 不改就是“Sheet1”worksheet.titletitle[0]# 删除“书名、出版社、ISDN”号三列都是空的行数,需要循环删除 # worksheet workbook.activefor row in worksheet.iter_rows(min_row3, max_row worksheet.max_row, min_col4, max_col6): # 4D# 因为删除一个空行后行数上移可能会跳过某些空行所以最多循环350次反复删除空行for y in range(365): # 生成时间长# 检查D、E和F列的单元格是否都为空if all(cell.value is None for cell in row):# 如果都为空删除整行worksheet.delete_rows(row[0].row)# 保存修改后的Excel文件workbook.save(imagePathr\\02插入班级年级的班级图书\新{}.format(doc_paths[x][-15:]))workbook.close()print(------------第4步将改过的新图书放在一张表里保留原始格式-------------)# # 把整理里面的多个EXCEL工作表合并在一个工作表内N个工作簿、# print(---第3步把23个工作簿合并1个工作簿的N个工作表-----)# arC:\Users\jg2yXRZ\OneDrive\桌面\图书\各班填写后EXCEL.xlsx
# print(a)# def merge_excel_files(path):
# # create a new Excel workbook or open an existing one
# excel win32.gencache.EnsureDispatch(Excel.Application)
# try:
# wb excel.Workbooks.Open(os.path.join(path, a))
# except:
# wb excel.Workbooks.Add()# # loop through all Excel files in the folder
# for file in os.listdir(path):
# print(file)
# # 大5班班级图书汇总表.xlsx
# if file.endswith(.xlsx): # open the Excel file打开EXCEL文件
# wwpath\\file
# print(ww)
# wb_source excel.Workbooks.Open(os.path.join(path, file))
# print(wb_source)
# # loop through all worksheets in the Excel file 所有文件内容
# for sheet in wb_source.Worksheets:# # copy the worksheet to the destination workbook 复制表格内容到目标文件内,将其放到N工作表格后面
# sheet.Copy(Afterwb.Sheets(wb.Sheets.Count))# # close the source workbook 关闭来源文件
# wb_source.Close()# # save and close the destination workbook
# wb.SaveAs(os.path.join(path, a))
# wb.Close()
# excel.Quit()# # delete Sheet1 from 合并.xlsx
# excel win32.gencache.EnsureDispatch(Excel.Application)
# wb excel.Workbooks.Open(os.path.join(path, a))
# ws wb.Worksheets(Sheet1)
# ws.Delete()
# wb.Save()
# wb.Close()
# excel.Quit()# path imagePathr\\02插入班级年级的班级图书
# merge_excel_files(path)
终端演示
最终成果 还没有研究出来如何将这么多工作表合并在一张工作表的一个工作簿里并保留原来的格式。
待续