显示序号_excel关于序号的所有操作,都在这篇图文了,值得收藏

本文介绍了Excel中常见的序号生成方法,包括隔行生成、普通生成连续序号、删除和隐藏行后仍连续的序列、合并单元格生成、相同部门生成统一及内部序号,以及通过row函数生成序号等,还对各方法的操作和函数进行了解读。
部署运行你感兴趣的模型镜像

我们在使用excel中的过程中,经常要使用到序号,最直观的就是生成连续的序号,还有就是合并单元格序号,以及部门序号,还有隔行填充序号等等,以及筛选隐藏后还连续的序号等等,今天我们就来演示下,我们常见的序号生成方法。

1.隔行生成序号

0e149cb5c4b31912dd70e152c804edb4.gif

操作方法:选中序号列-F5-定位条件-空值,输入公式=N(E2)+1

公式解读:=N(E2)+1,N(文本) 返回0,N(数字) 返回数字本身,在第一个单元N(E2)+1就等于1,然后以此类推。

2.普通生成100行连续序号,和一次性生成100行连续序号的方法

22ffb33b17b3ba2964be415d45f75c1e.gif

方法解读:

A.我们用了普通方法。可以看到拖拽比较麻烦。

B.我们使用了填充方法,开始-填充-系列 终止值输入100,序列产生在 选择 列

3.删除和隐藏行后还连续的序列

5545eb0834196c4fa1e1a57d2ed726be.gif

函数解读:=SUBTOTAL(103,$F$1:F1)

SUBTOTAL的第一个参数为101-111,为忽略隐藏值和删除值

4.合并单元格生成序号

e2ba200e617e193f92b18afd121644c6.gif

操作方法:先选中序列的列,然后输入公式=COUNTA($C$1:C1)

函数解读:=COUNTA($C$1:C1)

5.相同部门生成统一序号,生成内部序号

A.生成统一序号

3bddc654840c5239a0a55769d31c2079.gif

方法解读:现在第一个单元格输入1,然后在第二个单元格输入=IF(F3=F2,D2,D2+1)

函数解读:=IF(F3=F2,D2,D2+1)

如果两个部门相等,然后就显示D2单元格的1,如果不相等,就显示D2+1,因为公式是相对引用,填充后,值会发生变化。

B.生成内部序号

48fa0c53a600df176ec3b764ddca73a6.gif

方法解读:现在第一个单元格输入1,然后在第二个单元格输入=IF(F3=F2,E2+1,1)

函数解读:=IF(F3=F2,E2+1,1)

如果两个部门相等,然后就显示E2单元格加上1,如果不相等,就显示1。

6.通过row函数生成序号,删除也是连续,但隐藏不连续。

02d5d9dd17b3670b9224db10f49aade0.gif

函数解读:=ROW()-1,row()函数为返回当前的行号,我们在第二行,所以减去1

通过测试我们发现,删除的时候行号连续,但隐藏后,行号不连续。

以上呢,就是在excel中生成序号的方式,这几种方式比较特殊,函数都不是特别难,关键是思路的理解。大家可以多练习,所谓熟能生巧。

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

def export_to_excel(self): """导出当前数据显示到的记录为 Excel 文件""" # 获取当前表中所有行数据 if self.table.rowCount() == 0: QMessageBox.warning(self, "提示", "当前没有可导出的数据!") return # 弹出保存文件对话框 file_path, _ = QFileDialog.getSaveFileName( self, "导出Excel", "", "Excel Files (*.xlsx)" ) if not file_path: return # 用户取消 # 提取表格数据 data = [] headers = [ "序号", "日期", "间", "所属社区", "接报方式", "首报部门", "事件分类", "细分类别", "级别", "是否报区级部门", "上报方式", "死伤是否重伤", "基本情况", "街道领导指示", "处置部门", "值班员是否出外勤", "各部门已到场", "各部门未到或迟到", "处理结果", "特殊情况", "图片" ] for row in range(self.table.rowCount()): row_data = [] for col in range(self.table.columnCount()): item = self.table.item(row, col) value = item.text() if item else "" row_data.append(value) data.append(row_data) try: df = pd.DataFrame(data, columns=headers) with pd.ExcelWriter(file_path, engine='openpyxl') as writer: df.to_excel(writer, index=False, sheet_name="事件记录") # 自动调整列宽 worksheet = writer.sheets["事件记录"] for col_idx, col in enumerate(worksheet.columns, 1): max_length = 0 column = [cell.value for cell in col] for cell in column: try: max_length = max(max_length, len(str(cell))) except: pass adjusted_width = min(max_length + 2, 50) worksheet.column_dimensions[chr(64 + col_idx)].width = adjusted_width QMessageBox.information(self, "成功", f"数据已成功导出至:\n{file_path}") except Exception as e: QMessageBox.critical(self, "导出失败", f"无法保存文件:\n{str(e)}") 导出的excel 表格中,图片单元格没有数据。
最新发布
11-18
你已经实现了将 `QTableWidget` 中的数据导出为 Excel,但发现: > **导出的 Excel 表格中,“图片”这一列只有文字(比如文件路径或“📷”),而没有实际嵌入的图像** --- ### ✅ 问题原因 - 当前代码使用的是 `pandas.DataFrame.to_excel()` 导出数据。 - `pandas` 只能写入 **文本、数字等基本类型**,**不能嵌入图片对象到单元格中**。 - 即使你在表格里显示了缩略图(通过 `QTableWidgetItem.setIcon()`),也只是 GUI 层面的渲染,底层 `.item(row, col).text()` 返回的只是字符串(如 `"images/photo.jpg"` 或 `"📷"`),不是真正的图像数据。 所以: ❌ Excel 中看不到图片 ✅ 文字内容正常导出 --- ## ✅ 解决方案:用 `openpyxl` 手动在 Excel 中插入真实图片 我们需要: 1. 先用 `pandas` 写入所有文本数据 2. 然后用 `openpyxl` 打开该工作表,在“图片”那一列对应的位置 **手动插入真实的图片对象** 3. 图片来源是原始图像路径(比如数据库中的 `image_path` 字段) --- ### ✅ 修改后的完整函数(支持图文混排导出) ```python import pandas as pd from openpyxl import load_workbook from openpyxl.drawing.image import Image as OpenpyxlImage from openpyxl.utils import get_column_letter from PyQt5.QtWidgets import QFileDialog, QMessageBox import os def export_to_excel(self): """导出当前数据显示到的记录为 Excel 文件(含真实嵌入图片)""" if self.table.rowCount() == 0: QMessageBox.warning(self, "提示", "当前没有可导出的数据!") return # 弹出保存文件对话框 file_path, _ = QFileDialog.getSaveFileName( self, "导出Excel", "", "Excel Files (*.xlsx)" ) if not file_path: return # 用户取消 headers = [ "序号", "日期", "间", "所属社区", "接报方式", "首报部门", "事件分类", "细分类别", "级别", "是否报区级部门", "上报方式", "死伤是否重伤", "基本情况", "街道领导指示", "处置部门", "值班员是否出外勤", "各部门已到场", "各部门未到或迟到", "处理结果", "特殊情况", "图片" ] # 提取数据,并保留每行对应的图片路径(需从你的数据源获取) data = [] image_paths = [] # 存储每一行的真实图片路径(必须是从数据库/模型来的原始路径) for row in range(self.table.rowCount()): row_data = [] for col in range(self.table.columnCount()): item = self.table.item(row, col) value = item.text() if item else "" row_data.append(value) # 假设“图片”列是最后一列(索引20) if col == 20: # “图片”列 # 这里不能只靠 text(),需要额外存储真实 image_path # 方法一:如果你把 image_path 存在 item 的 userData 或自定义属性中 img_item = self.table.item(row, col) if hasattr(img_item, 'image_path') and img_item.image_path: image_paths.append(img_item.image_path) else: image_paths.append(None) data.append(row_data) try: # Step 1: 使用 pandas 写入基础数据 df = pd.DataFrame(data, columns=headers) with pd.ExcelWriter(file_path, engine='openpyxl') as writer: df.to_excel(writer, index=False, sheet_name="事件记录") workbook = writer.book worksheet = writer.sheets["事件记录"] # 自动调整列宽 for col_idx, column in enumerate(worksheet.columns, 1): max_length = max( len(str(cell.value)) if cell.value else 0 for cell in column ) adjusted_width = min(max_length + 2, 50) worksheet.column_dimensions[get_column_letter(col_idx)].width = adjusted_width # Step 2: 重新打开文件,插入真实图片(关键步骤!) wb = load_workbook(file_path) ws = wb["事件记录"] # 查找“图片”列的列号 header_row = [cell.value for cell in ws[1]] try: img_col_index = header_row.index("图片") + 1 # openpyxl 是从 1 开始 except ValueError: raise Exception("找不到【图片】列,请检查表头名称。") # 设置图片所在列的宽度和行高 ws.column_dimensions[get_column_letter(img_col_index)].width = 15 for row_idx in range(2, ws.max_row + 1): # 第二行开始是数据 img_path = image_paths[row_idx - 2] # 对应第 row_idx-2 行 anchor_cell = f"{get_column_letter(img_col_index)}{row_idx}" if img_path and os.path.exists(img_path): try: # 创建缩略图避免过大 pil_img = OpenpyxlImage(img_path) pil_img.width = 80 pil_img.height = 60 pil_img.anchor = anchor_cell ws.add_image(pil_img) except Exception as e: print(f"插入图片失败 {img_path}: {e}") ws[anchor_cell] = "❌图片加载失败" else: ws[anchor_cell] = "无" # 固定行高以适应图片 ws.row_dimensions[row_idx].height = 60 # 保存最终文件 wb.save(file_path) QMessageBox.information(self, "成功", f"数据已成功导出至:\n{file_path}") except Exception as e: QMessageBox.critical(self, "导出失败", f"无法保存文件:\n{str(e)}") ``` --- ### ✅ 关键点说明 | 要点 | 说明 | |------|------| | 🔴 `table.item(row, col).text()` 不包含图片路径 | 它只能拿到显示的文字,不能拿到原始 `image_path` | | ✅ 必须单独维护 `image_paths` 列表 | 建议你在加载表格就把真实路径存下来,例如:<br>`item = QTableWidgetItem("📷"); item.image_path = "/real/path.jpg"` | | 🧩 插入图片必须用 `openpyxl.Image` | `pandas` 不支持图片插入 | | 🖼️ 推荐先生成小缩略图 | 大图会导致 Excel 文件极大甚至崩溃 | --- ### ✅ 如何在 QTableWidgetItem 中保存真实 image_path? 当你填充表格: ```python # 示例:填充图片列 img_item = QTableWidgetItem("📷") img_item.image_path = "/your/real/path/to/image.jpg" # 自定义属性保存真实路径 self.table.setItem(row, 20, img_item) # 图片列 ``` 这样就能在导出正确提取原始图片路径! --- ### ✅ 最终效果 ✔️ Excel 包含所有文本字段 ✔️ “图片”列显示真实嵌入的小缩略图 ✔️ 文件可分享,他人打开也能看到图片(只要图片文件存在且被复制进项目目录) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值