网站设计多少钱市场价卖水果做哪个网站好

张小明 2026/1/19 20:46:44
网站设计多少钱市场价,卖水果做哪个网站好,seo技术博客,电脑培训学校在哪里背景需求 昨天做了全园所有班级的“涂氟单”PDF 【办公类-18-08】20251217#xff08;Python#xff09;全园幼儿“口腔检查涂氟信息”批量生成打印https://mp.csdn.net/mp_blog/creation/editor/156028065 今天再同理做一份“验血单” 【办公类-18-04】20250520#xf…背景需求昨天做了全园所有班级的“涂氟单”PDF【办公类-18-08】20251217Python全园幼儿“口腔检查涂氟信息”批量生成打印https://mp.csdn.net/mp_blog/creation/editor/156028065今天再同理做一份“验血单”【办公类-18-04】20250520Python“验血单信息”批量生成打印学校、班级、姓名、性别https://mp.csdn.net/mp_blog/creation/editor/148099329一、数据情况二、下载园园通名单三、合并exlce 20251220验血单制作 1、下载园园通新生名册.xls,把两个新生名册合并在一起 2、部分插班生信息手动添加 deepseek阿夏 20251124 import pandas as pd import os import re def format_long_number(value): 处理长数字避免科学计数法和精度丢失 if pd.isna(value) or value : return value str_value str(value).strip() # 处理科学计数法 if e in str_value.lower() or e- in str_value.lower(): try: # 将科学计数法转换为完整数字 num_value float(str_value) return str(int(num_value)) if num_value.is_integer() else str(num_value) except: return str_value # 处理浮点数.0的情况 if . in str_value and str_value.endswith(.0): return str_value[:-2] return str_value def format_class_name(class_name): 格式化班级名称 if pd.isna(class_name) or class_name : return class_name class_str str(class_name) # 定义班级类型和对应的前缀 class_types { 托班: 托, 托: 托, 小班: 小, 小: 小, 中班: 中, 中: 中, 大班: 大, 大: 大 } # 中文数字到阿拉伯数字的映射 chinese_to_arabic { 一: 1, 二: 2, 三: 3, 四: 4, 五: 5, 六: 6, 七: 7, 八: 8, 九: 9, 十: 10, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10 } # 尝试匹配各种班级格式 patterns [ r([托小中大])班(\S?)班, # 如大班一班 r([托小中大])(\S?)班, # 如大一班 r(\S?)([托小中大])班, # 如一班大班 r([托小中大])班, # 如大班没有具体班号 ] for pattern in patterns: match re.search(pattern, class_str) if match: if len(match.groups()) 0: # 有班级类型和班号 class_type match.group(1) class_num match.group(2) # 获取班级前缀 prefix class_types.get(class_type, class_type) # 转换班号 if class_num in chinese_to_arabic: num chinese_to_arabic[class_num] return f{prefix}{num}班 else: return f{prefix}{class_num}班 else: # 只有班级类型没有班号 class_type match.group(1) prefix class_types.get(class_type, class_type) return f{prefix}班 # 如果没有匹配到任何模式返回原值 return class_str def merge_and_format_excel(): # 定义文件路径 path rC:\Users\jg2yXRZ\OneDrive\桌面\20251220验血单全园 folder_path path r\01园园通下载 output_path path r\02园园通全部班级信息合并.xlsx # 获取文件夹中的所有Excel文件 excel_files [f for f in os.listdir(folder_path) if f.endswith((.xlsx, .xls))] if len(excel_files) 2: print(234文件夹中Excel文件数量不足2个) return # 读取所有Excel文件时指定数据类型为字符串避免数字精度丢失 dfs [] for file in excel_files[:3]: # 只处理前两个文件 file_path os.path.join(folder_path, file) # 首先读取第一行来检测列的数据类型 temp_df pd.read_excel(file_path, nrows1) # 创建dtype字典将所有列都设置为字符串类型 dtype_dict {col: str for col in temp_df.columns} # 用字符串类型重新读取整个文件 df pd.read_excel(file_path, dtypedtype_dict, keep_default_naFalse) # 特别处理身份证号、学号等可能的长数字列 for col in df.columns: if any(keyword in col for keyword in [身份证, 证件号, 学号, 幼儿编号, ID]): # 去除可能的空格和特殊字符 df[col] df[col].astype(str).str.strip() # 如果是以科学计数法形式出现的数字进行转换 df[col] df[col].apply(lambda x: format_long_number(x)) dfs.append(df) print(f已读取文件: {file}) # 合并数据 merged_df pd.concat(dfs, ignore_indexTrue) # 查找包含班级信息的列 class_columns [col for col in merged_df.columns if any(keyword in col for keyword in [班, class, 班级])] if class_columns: for class_col in class_columns: print(f检测到班级列: {class_col}) merged_df[class_col] merged_df[class_col].apply(format_class_name) else: print(未检测到班级列跳过格式转换) # 再次处理所有列确保数字格式正确 for col in merged_df.columns: merged_df[col] merged_df[col].apply(format_long_number) # 保存合并后的文件 # 使用openpyxl引擎避免xlsxwriter对长数字的处理问题 with pd.ExcelWriter(output_path, engineopenpyxl) as writer: merged_df.to_excel(writer, indexFalse) print(f文件已保存至: {output_path}) print(f合并完成共{len(merged_df)}条记录) # 显示一些样本数据以供验证 print(\n前5条数据的班级信息) if class_columns: for class_col in class_columns: print(f{class_col}列的前5个值) print(merged_df[class_col].head().tolist()) # 特别显示可能的长数字列 long_num_cols [col for col in merged_df.columns if any(keyword in col for keyword in [身份证, 证件号, 学号, 幼儿编号, ID])] if long_num_cols: print(\n长数字列样本数据) for col in long_num_cols: print(f{col}列的前3个值) print(merged_df[col].head(3).tolist()) # 执行函数 if __name__ __main__: merge_and_format_excel()四、匹配学号重新排列 20251220验血单制作 1、用合并xls与班级信息表的学号匹配按学号排队保存03匹配学号.xlsx deepseek阿夏 20251217 import pandas as pd import os def format_long_number(value): 处理长数字避免科学计数法和精度丢失 if pd.isna(value) or value : return value str_value str(value).strip() # 处理科学计数法 if e in str_value.lower() or e- in str_value.lower(): try: # 将科学计数法转换为完整数字 num_value float(str_value) return str(int(num_value)) if num_value.is_integer() else str(num_value) except: return str_value # 处理浮点数.0的情况 if . in str_value and str_value.endswith(.0): return str_value[:-2] # 处理浮点数显示为整数的情况 if . in str_value: try: # 检查是否可以转换为整数 float_val float(str_value) if float_val.is_integer(): return str(int(float_val)) except: pass return str_value # 设置路径 path rC:\Users\jg2yXRZ\OneDrive\桌面\20251220验血单全园 # 1. 读取园园通信息表 - 所有列都作为字符串读取 df_main pd.read_excel(path r\02园园通全部班级信息合并.xlsx, dtypestr, keep_default_naFalse) # 2. 读取班级信息表的所有工作表 - 所有列都作为字符串读取 xls pd.ExcelFile(path r\00班级信息表.xlsx) sheet_names xls.sheet_names # 3. 合并所有班级信息表 df_list [] for sheet in sheet_names: df_sheet pd.read_excel(xls, sheet_namesheet, dtypestr, keep_default_naFalse) df_sheet[班级] sheet # 添加班级列 df_list.append(df_sheet) df_info pd.concat(df_list, ignore_indexTrue) # 4. 匹配学号 df_merged pd.merge(df_main, df_info[[班级, 姓名, 学号]], left_on[所在班级, 姓名], right_on[班级, 姓名], howleft) # 5. 移动学号列到最前面 cols df_merged.columns.tolist() cols [学号] [col for col in cols if col ! 学号] df_merged df_merged[cols] # 6. 处理所有数字列避免精度丢失 for col in df_merged.columns: df_merged[col] df_merged[col].apply(format_long_number) # 7. 对完整匹配结果进行排序并保存 # 确保学号列是数值类型用于排序但保存时保持字符串格式 df_merged[学号_排序] pd.to_numeric(df_merged[学号], errorscoerce) # 创建班级排序的映射关系 class_order { 托1班: 1, 托2班: 2, 托3班: 3, 托4班: 4, 小1班: 5, 小2班: 6, 小3班: 7, 小4班: 8, 中1班: 9, 中2班: 10, 中3班: 11, 中4班: 12, 大1班: 13, 大2班: 14, 大3班: 15, 大4班: 16 } # 添加临时排序列 df_merged[班级排序] df_merged[所在班级].map(class_order) # 先按班级排序再按学号排序 df_merged_sorted df_merged.sort_values(by[班级排序, 学号_排序]) # 删除临时排序列 df_merged_sorted df_merged_sorted.drop([班级排序, 学号_排序], axis1) # 保存排序后的完整表格使用openpyxl引擎避免数字格式问题 with pd.ExcelWriter(path r\03匹配学号.xlsx, engineopenpyxl) as writer: df_merged_sorted.to_excel(writer, indexFalse)五、制作需要信息的EXCLE分割成一个个班级并把一个个班级作为一个工作簿的多个工作表 20251220验血单制作 1、将03匹配学号.xlsx里面的学号、班级、姓名、身份证号幼儿编号等数据写入到医保模版指定的列里 2、先生成每个班级的独立Excel文件再合并所有文件到一个工作簿每个班级一个工作表 3、合并完成后删除存放单个文件的文件夹 deepseek阿夏 20251216 import pandas as pd import numpy as np from openpyxl import load_workbook, Workbook from openpyxl.styles import Alignment import os import glob import shutil # 用于删除文件夹含子文件 # 全局定义上海行政区列表避免作用域问题 OUTER_DISTRICT_LIST [ 黄浦区, 徐汇区, 长宁区, 静安区, 普陀区, 虹口区, 杨浦区, 浦东新区, 宝山区, 嘉定区, 金山区, 松江区, 青浦区, 奉贤区, 崇明区 ] SHANGHAI_DISTRICTS [闵行区] OUTER_DISTRICT_LIST # 核心修改统一配置路径 # 请根据你的实际文件位置修改这个路径 BASE_PATH rC:\Users\jg2yXRZ\OneDrive\桌面\20251220验血单全园 def batch_process_all_classes(): 批量处理所有班级的医保表格数据生成单个班级文件 main_data_file os.path.join(BASE_PATH, 03匹配学号.xlsx) # 增加文件存在性检查 if not os.path.exists(main_data_file): print(f❌ 主数据文件不存在{main_data_file}) print(请检查1. 文件路径是否正确 2. 文件名是否为03匹配学号.xlsx) return df_main pd.read_excel(main_data_file, sheet_name0) valid_classes [cls for cls in df_main[所在班级].unique() if pd.notna(cls)] print(f✅ 成功识别 {len(valid_classes)} 个班级{valid_classes}) for class_name in valid_classes: process_single_class(df_main, class_name, BASE_PATH) print(f\n 所有班级独立文件生成完成累计处理 {len(valid_classes)} 个班级) # 生成完成后自动执行合并操作 merge_class_files_to_one_workbook(BASE_PATH) # 合并完成后删除单个文件的文件夹 output_dir os.path.join(BASE_PATH, 2025全校学生验血单) delete_folder(output_dir) def process_single_class(main_df, class_name, base_path): 处理单个班级加载模板、设置格式、填充数据、保存文件 class_students main_df[main_df[所在班级] class_name].copy() student_count_total len(class_students) print(f\n 开始处理班级{class_name}共{student_count_total}名学生) template_file os.path.join(base_path, 00模版验血单表格.xlsx) # 增加模板文件检查 if not os.path.exists(template_file): print(f❌ 模板文件缺失{template_file}) print(请检查1. 模板文件是否在指定路径 2. 文件名是否为00模版验血单表格.xlsx) return try: workbook load_workbook(template_file) worksheet workbook.active except Exception as e: print(f❌ 加载模板文件失败{str(e)}) return # 全局统一文本格式E/F列 for col_letter in [E, F]: for cell in worksheet[col_letter]: cell.number_format cell.alignment Alignment(horizontalleft) start_row 2 max_student_limit 35 filled_count 0 for row_idx, (_, student_info) in enumerate(class_students.iterrows(), startstart_row): if filled_count max_student_limit: print(f⚠️ 班级 {class_name} 学生数超过{max_student_limit}人仅保留前{max_student_limit}条数据) break filled_count 1 print(f 处理第{filled_count}名学生{student_info[姓名]}) fill_student_details(worksheet, row_idx, student_info, class_name) # 创建输出目录并保存文件 output_dir os.path.join(base_path, 2025全校学生验血单) os.makedirs(output_dir, exist_okTrue) output_filename f{class_name}_2025园园通学生验血单.xlsx output_path os.path.join(output_dir, output_filename) try: workbook.save(output_path) print(f✅ 班级 {class_name} 处理完成文件保存至{output_path}) except PermissionError: print(f❌ 保存失败{output_path} 已被打开请关闭后重试) except Exception as e: print(f❌ 保存文件失败{str(e)}) def fill_student_details(worksheet, row_num, student_data, class_name): 填充单个学生的详细信息到表格指定位置 # A列学号 if 学号 in student_data and pd.notna(student_data[学号]): worksheet[fA{row_num}] str(student_data[学号]) # B列姓名 if 姓名 in student_data and pd.notna(student_data[姓名]): worksheet[fB{row_num}] student_data[姓名] # C列班级 if 所在班级 in student_data and pd.notna(student_data[所在班级]): worksheet[fC{row_num}] student_data[所在班级] # D列性别 if 性别 in student_data and pd.notna(student_data[性别]): worksheet[fD{row_num}] str(student_data[性别]) # 以下为注释掉的字段如需启用可取消注释 # # I列证件号码身份证号 # if 证件号码 in student_data and pd.notna(student_data[证件号码]): # worksheet[fI{row_num}] str(student_data[证件号码]) # worksheet[fI{row_num}].number_format # # F/G/H列出生日期拆分为年/月/日补零至2位 # if 出生日期 in student_data and pd.notna(student_data[出生日期]): # try: # birth_dt pd.to_datetime(student_data[出生日期]) # worksheet[fF{row_num}] birth_dt.year # 年 # worksheet[fG{row_num}] f{birth_dt.month:02d} # 月补零 # worksheet[fH{row_num}] f{birth_dt.day:02d} # 日补零 # worksheet[fG{row_num}].number_format # worksheet[fH{row_num}].number_format # except Exception as e: # worksheet[fF{row_num}] str(student_data[出生日期]) # print(f ⚠️ {student_data[姓名]} 出生日期格式异常{student_data[出生日期]}错误{str(e)}) # # J/K列户口所在地上海→J列勾非上海→K列勾 # if 户口所在地区 in student_data and pd.notna(student_data[户口所在地区]): # hukou_district str(student_data[户口所在地区]).strip() # if hukou_district in SHANGHAI_DISTRICTS: # worksheet[fJ{row_num}] √ # else: # worksheet[fK{row_num}] √ def merge_class_files_to_one_workbook(base_path): 将2025全校学生验血单文件夹中的所有班级文件合并到一个工作簿仅复制值避免格式报错 # 1. 定义文件夹路径和文件匹配规则 output_dir os.path.join(base_path, 2025全校学生验血单) if not os.path.exists(output_dir): print(f\n⚠️ 待合并的文件夹不存在{output_dir}) return file_pattern os.path.join(output_dir, *_2025园园通学生验血单.xlsx) class_files glob.glob(file_pattern) if not class_files: print(f\n⚠️ 未找到待合并的班级文件检查路径{output_dir}) return print(f\n 找到 {len(class_files)} 个待合并的班级文件) for f in class_files: print(f - {os.path.basename(f)}) # 2. 创建新的整合工作簿 merged_wb Workbook() # 删除默认的Sheet工作表 if Sheet in merged_wb.sheetnames: merged_wb.remove(merged_wb[Sheet]) # 3. 逐个读取班级文件仅复制值到整合工作簿 for file_path in class_files: try: # 读取单个班级文件仅读值不加载格式提升效率 class_wb load_workbook(file_path, data_onlyTrue) class_ws class_wb.active # 提取班级名从文件名中截取 file_name os.path.basename(file_path) class_name file_name.replace(_2025园园通学生验血单.xlsx, ) # 在整合工作簿中新建工作表命名为班级名 new_ws merged_wb.create_sheet(titleclass_name) # 仅复制单元格的值 for row_idx, row in enumerate(class_ws.iter_rows(values_onlyTrue), start1): for col_idx, cell_value in enumerate(row, start1): new_ws.cell(rowrow_idx, columncol_idx, valuecell_value) # 对关键列设置文本格式 key_cols [A, E, F, G, H, I] # 学号、班级、出生日期、身份证号列 for col_letter in key_cols: for row in new_ws.iter_rows(min_row1, max_row100): cell row[ord(col_letter)-ord(A)] cell.number_format cell.alignment Alignment(horizontalleft) print(f✅ 已合并班级{class_name}) except Exception as e: print(f❌ 合并文件 {file_path} 失败{str(e)}) # 4. 保存整合后的工作簿 merged_file_path os.path.join(base_path, 04园园通学生验血单_班级合并版.xlsx) try: merged_wb.save(merged_file_path) print(f\n 所有班级文件合并完成) print(f 合并文件保存至{merged_file_path}) print(f 工作簿包含工作表{merged_wb.sheetnames}) except PermissionError: print(f\n❌ 合并文件保存失败{merged_file_path} 已被打开请关闭后重试) except Exception as e: print(f\n❌ 保存合并文件失败{str(e)}) def delete_folder(folder_path): 删除指定文件夹含所有子文件/子文件夹处理权限问题 if not os.path.exists(folder_path): print(f\n 文件夹 {folder_path} 不存在无需删除) return try: # rmtree 递归删除文件夹及所有内容 shutil.rmtree(folder_path) print(f\n️ 已成功删除文件夹{folder_path}) except PermissionError: print(f\n❌ 删除文件夹失败{folder_path} 或其中的文件被占用请关闭相关Excel文件后手动删除) except Exception as e: print(f\n❌ 删除文件夹 {folder_path} 失败{str(e)}) # 主程序入口 if __name__ __main__: print(*60) print( 程序开始执行 - 验血单批量生成工具) print(f 基础路径{BASE_PATH}) print(*60) try: main_data_path os.path.join(BASE_PATH, 03匹配学号.xlsx) if not os.path.exists(main_data_path): raise FileNotFoundError(f主数据文件不存在{main_data_path}) df_check pd.read_excel(main_data_path) # 调整必要列清单适配实际业务 required_columns [ 所在班级, 学号, 姓名, 性别 ] missing_cols [col for col in required_columns if col not in df_check.columns] if missing_cols: raise ValueError(f主数据文件缺少必要列{, .join(missing_cols)}) print( 主数据文件信息) print(f 列名{df_check.columns.tolist()}) print(f 总行数{len(df_check)}) print(f 涉及班级{[cls for cls in df_check[所在班级].unique() if pd.notna(cls)]}) print(*60) batch_process_all_classes() print(\n✅ 程序执行完毕) except Exception as main_err: print(f\n❌ 程序执行失败{str(main_err)}) print(请优先检查) print( 1. BASE_PATH 变量是否指向正确的文件夹) print( 2. 文件夹内是否有 03匹配学号.xlsx 和 00模版验血单表格.xlsx 文件) print( 3. 所有Excel文件都已关闭避免权限问题)六、每个班级内容都做成PDF# -*- coding:utf-8 -*- 目的验血单一个班级单独打印 作者deepseek阿夏 日期20251220 功能遍历Excel多工作表每个班级生成独立的合并PDF统一存放至“合并PDF”文件夹 # 一、导入相关模块设定路径 from docxtpl import DocxTemplate import pandas as pd import os import time from docx2pdf import convert from PyPDF2 import PdfFileMerger import shutil # 配置参数 l 2 # 1有背景图2无背景图 zpath rC:\Users\jg2yXRZ\OneDrive\桌面\20251220验血单全园\\ temp_word_path zpath r零时Word # 临时Word/PDF文件夹 pdf_output_dir os.path.join(zpath, 02合并PDF) # 最终PDF统一存放文件夹 # 二、核心函数处理单个班级工作表的数据 def process_class_sheet(sheet_name, sheet_data): 处理单个班级的Excel数据 :param sheet_name: 工作表名班级名 :param sheet_data: 该班级的DataFrame数据 # 1. 创建临时文件夹每个班级单独的临时目录避免冲突 class_temp_path os.path.join(temp_word_path, sheet_name) try: os.makedirs(class_temp_path) except FileExistsError: pass # 2. 获取班级数据 total_people sheet_data.shape[0] print(f\n 开始处理【{sheet_name}】班共 {total_people} 人 ) # 提取列数据做空值处理避免报错 sheet_data sheet_data.fillna() # 空值替换为空字符串 num sheet_data[num] name sheet_data[name] # school sheet_data[school] sex sheet_data[sex] classroom sheet_data[classroom].astype(str).str.replace(\n, ) # 去掉换行符 # y sheet_data[y] # m sheet_data[m] # d sheet_data[d] # ID sheet_data[ID] # SH sheet_data[SH] # FSH sheet_data[FSH] # M sheet_data[M] # F sheet_data[F] # dis sheet_data[dis] # nation sheet_data[nation] # 3. 遍历生成单个Word和PDF pdf_files [] # 存储该班级的所有PDF路径 for i in range(total_people): try: # 构造渲染数据 context { num: str(num.iloc[i]), sex: sex.iloc[i], # dis: dis.iloc[i], name: name.iloc[i], # school: school.iloc[i], classroom: classroom.iloc[i], # y: y.iloc[i], # m: m.iloc[i], # d: d.iloc[i], # ID: ID.iloc[i], # SH: SH.iloc[i], # FSH: FSH.iloc[i], # M: M.iloc[i], # F: F.iloc[i], # nation: nation.iloc[i], } # 加载模板 if l 1: tpl DocxTemplate(zpath 打印单字(有背景).docx) else: tpl DocxTemplate(zpath 打印单字(无背景).docx) # 生成Word word_file os.path.join(class_temp_path, f{num.iloc[i]:02}.docx) tpl.render(context) tpl.save(word_file) # 转换为PDF pdf_file os.path.join(class_temp_path, f{num.iloc[i]:02}.pdf) convert(word_file, pdf_file) pdf_files.append(pdf_file) print(f 已生成{sheet_name}班 - {num.iloc[i]:02}.pdf) time.sleep(1) # 避免转换过快报错 except Exception as e: print(f ❌ 处理第{i1}条数据失败{str(e)}) continue # 4. 合并该班级的所有PDF保存到“合并PDF”文件夹 if pdf_files: # 创建“合并PDF”文件夹确保存在 os.makedirs(pdf_output_dir, exist_okTrue) pdf_files.sort() # 按序号排序 merger PdfFileMerger() for pdf in pdf_files: try: merger.append(pdf) except: pass # 定义最终PDF文件名保存到“合并PDF”文件夹 bg_flag 有背景图 if l 1 else 无背景图 final_pdf_name f{sheet_name}班验血单({total_people}人)({bg_flag}).pdf final_pdf_path os.path.join(pdf_output_dir, final_pdf_name) # 保存合并后的PDF merger.write(final_pdf_path) merger.close() print(f\n✅ 【{sheet_name}】班合并PDF完成{final_pdf_path}) else: print(f\n⚠️ 【{sheet_name}】班无有效PDF文件跳过合并) # 5. 删除该班级的临时文件夹 try: shutil.rmtree(class_temp_path) print(f️ 已删除【{sheet_name}】班临时文件) except: print(f⚠️ 【{sheet_name}】班临时文件删除失败请手动清理{class_temp_path}) # 三、主流程遍历Excel所有工作表 if __name__ __main__: # 1. 检查Excel文件是否存在 excel_path zpath 04园园通学生验血单_班级合并版.xlsx if not os.path.exists(excel_path): print(f❌ 未找到Excel文件{excel_path}) exit() # 2. 提前创建“合并PDF”文件夹确保目录存在 os.makedirs(pdf_output_dir, exist_okTrue) print(f 最终PDF将保存至{pdf_output_dir}) # 3. 获取所有工作表名称 excel_file pd.ExcelFile(excel_path) sheet_names excel_file.sheet_names print(f 找到Excel工作表班级{sheet_names}) # 4. 遍历每个工作表班级处理 for sheet in sheet_names: # 读取该工作表的数据 df pd.read_excel(excel_path, sheet_namesheet) # 处理该班级 process_class_sheet(sheet, df) # 5. 删除总临时文件夹 try: shutil.rmtree(temp_word_path) print(f\n️ 已删除总临时文件夹{temp_word_path}) except: print(f\n⚠️ 总临时文件夹删除失败请手动清理{temp_word_path}) print(f\n 所有班级PDF生成完成所有PDF文件已保存至{pdf_output_dir})因为20个班级每个班级20-35人之间所以生成时间很长。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

购物网站分为几个模块qq空间网页版在线登录入口

摘要:社交机器人凭借人工智能、自然语言处理与计算机视觉技术,成为破解孤独与社交隔离的创新方案。其不仅为老年人、自闭症儿童、残障人士等群体提供情感陪伴与生活辅助,更覆盖居家、医疗、养老等多场景,通过对话交互、情绪识别、…

张小明 2026/1/17 6:07:59 网站建设

哈尔滨企业建站系统phpcms门户网站

一、 核心定位:破解吊装核心难题 —— 防摇集装箱起重机吊装作业中,吊具摆动控制是核心难点,传统完全依赖司机实操经验,新手上手难、资深司机在高强度作业下也难以保持稳定防摇效果,进而影响吊装安全与作业效率。本方案…

张小明 2026/1/17 22:37:10 网站建设

瀑布流网站模板学什么可以做推广网站

从零搭建uniapp电商小程序:小兔鲜儿项目全流程开发指南 【免费下载链接】uniapp-shop-vue3-ts 小兔鲜儿-vue3ts-uniapp 项目已上线,小程序搜索《小兔鲜儿》即可体验。🎉🎉🎉 配套项目接口文档,配套笔记。 …

张小明 2026/1/17 22:38:05 网站建设

新手做网站需要哪些教材然后搭建网站

MoviePilot:NAS媒体库智能管理完整指南 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mov/MoviePilot 还在为海量电影电视剧资源杂乱无章而烦恼吗?MoviePilot作为专为NAS用户打造的智能媒体库管…

张小明 2026/1/17 22:37:14 网站建设

搜索别人的网站是带logo的请问怎么做的wordpress整合jwplayer

全网最全研究生必备AI论文工具TOP10测评 学术写作工具的进化与评测逻辑 在科研日益数字化的今天,研究生群体对AI论文工具的需求呈现出多元化趋势。从文献综述到数据整理,从语言润色到格式规范,每一个环节都可能成为研究过程中的“卡点”。为帮…

张小明 2026/1/17 22:37:14 网站建设

游戏网站交换友情链接南昌百度推广优化排名

从零搭建工业级CAN通信系统:Keil uVision5实战全解析 你有没有遇到过这样的场景? 在车间调试一台新设备,PLC和传感器之间突然断联,上位机收不到数据。用示波器一查,CAN总线波形乱成一团;换线、重启、改终端…

张小明 2026/1/17 20:54:06 网站建设