def show_excel(self): self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"] rows = self.record_sheet.iter_rows(min_row=1, values_only=True) records = [] header = next(rows) # 将数据插入到文本框中 for row in records: row_str = '' for col in row: row_str += str(col) + '\t' self.result_text.insert(tk.END, row_str + '\n')怎麽將excel表名是數據表中所有内容顯示到文本框中

时间: 2024-02-14 14:13:46 浏览: 29
要将Excel表名为“數據表”中的所有内容显示到文本框中,您可以使用以下代码: ``` def show_excel(self): self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.data_sheet = self.wb["數據表"] # 将工作表命名为"數據表" rows = self.data_sheet.iter_rows(min_row=1, values_only=True) records = [] header = next(rows) # 将数据插入到文本框中 for row in rows: row_str = '' for col in row: row_str += str(col) + '\t' self.result_text.insert(tk.END, row_str + '\n') ``` 在此代码中,我们将工作表命名为“數據表”,并使用该名称从工作簿中获取数据表。然后,我们使用该数据表中的所有行来填充记录列表,并将其插入到文本框中。请注意,这里我们使用的是数据表的所有行,而不是只使用第一行之后的行,因为我们想要显示所有数据。
相关问题

import os import pandas as pd from openpyxl import load_workbook from openpyxl.utils.dataframe import dataframe_to_rows class ExcelProcessor: def __init__(self, path): self.path = path def process_excel(self): for root, dirs, files in os.walk(self.path): for filename in files: if filename.endswith('.xlsx') or filename.endswith('.xls'): filepath = os.path.join(root, filename) self.process_file(filepath) def process_file(self, filepath): wb = load_workbook(filepath) for sheet in wb: if sheet.title == '系数表': df = pd.DataFrame(sheet.values) df_t = df.T df_t.columns = df_t.iloc[0] df_t = df_t[1:] self.add_to_sheet(wb, df_t, '系数表_T') wb.save(filepath) def add_to_sheet(self, wb, df, sheet_name): try: ws = wb[sheet_name] except KeyError: ws = wb.create_sheet(sheet_name) for r in dataframe_to_rows(df, index=False, header=True): ws.append(r) for col in ws.columns: for cell in col: if cell.data_type == 'f': cell.value = cell.value return ws上述代码如何实例化使用

这段代码定义了一个ExcelProcessor类,用于处理指定路径下的Excel文件。要实例化该类,可以按如下方式进行: 1. 导入ExcelProcessor类:`from excel_processor import ExcelProcessor` 2. 创建ExcelProcessor实例对象,例如:`processor = ExcelProcessor('/path/to/excel/files')` 3. 调用ExcelProcessor的方法进行Excel文件处理,例如:`processor.process_excel()` 需要注意的是,这段代码中的Excel文件处理方法是根据指定路径下的所有Excel文件进行遍历处理的。因此,在实例化ExcelProcessor对象时需要传入正确的路径参数。另外,为了能够运行该代码,还需要将代码保存在名为'excel_processor.py'的文件中,并在实例化ExcelProcessor对象时正确导入该类。

from openpyxl import load_workbook, Workbook from openpyxl.styles import PatternFill class ExcelMerger: def __init__(self, input_path, output_path): self.input_path = input_path self.output_path = output_path self.workbook = Workbook() self.sheet = self.workbook.active self.fill = PatternFill(fill_type='solid', start_color='FFFFFF', end_color='FFFFFF') self.row_index = 1 def merge(self): for filename in os.listdir(self.input_path): if not filename.endswith('.xlsx'): continue filepath = os.path.join(self.input_path, filename) workbook = load_workbook(filepath, data_only=True) if '功能点拆分表' not in workbook.sheetnames: continue sheet = workbook['功能点拆分表'] for row in sheet.rows: self.sheet.row_dimensions[self.row_index].height = sheet.row_dimensions[row[0].row].height for cell in row: if cell.value is not None: self.sheet.cell(row=self.row_index, column=cell.column, value=cell.value) self.sheet.cell(row=self.row_index, column=cell.column).fill = cell.fill else: self.sheet.cell(row=self.row_index, column=cell.column).fill = self.fill self.row_index += 1 self.workbook.save(self.output_path)上述修改后的代码仍然出现TypeError: unhashable type: 'StyleProxy'的错误,怎么解决

这个问题通常是由于样式对象(Style)是不可哈希的导致的。在这种情况下,你需要将样式对象转换为可哈希的对象,或者使用其他数据结构来代替字典。 你可以尝试将样式对象转换为字符串,然后将字符串作为键来使用。例如,可以使用`str(style)`来获取样式对象的字符串表示形式,并将其用作字典的键,如下所示: ``` cell_style = {} ... if cell.has_style: cell_style[cell.coordinate] = str(cell.style) ... ``` 这样就可以避免`TypeError: unhashable type: 'StyleProxy'`错误。 当然,这只是一种解决方案,具体如何修改代码需要根据具体情况而定。

相关推荐

class InventoryApp: def __init__(self, master): self.master = master master.title("物料进出库统计") # 创建容器,用于放置表格和文本框 self.container = tk.Frame(master,width=0.2) self.container.grid(row=0, column=0, padx=5, pady=5) # 创建容器,用于放置表格和文本框 self.container1 = tk.Frame(master) self.container1.grid(row=0, column=15, padx=5, pady=5) # 创建标签和文本框 self.label1 = tk.Label(self.container, text="物料名称:") self.label1.grid(row=0, column=0, padx=5, pady=5) self.material_name = tk.Entry(self.container, width=20) self.material_name.grid(row=0, column=1, padx=5, pady=5) self.label2 = tk.Label(self.container, text="数量:") self.label2.grid(row=1, column=0, padx=5, pady=5) self.material_qty = tk.Entry(self.container, width=20) self.material_qty.grid(row=1, column=1, padx=5, pady=5) # 创建进出库按钮 self.in_button = tk.Button(self.container, text="进库", command=self.in_stock) self.in_button.grid(row=2, column=0, padx=5, pady=5) self.out_button = tk.Button(self.container, text="出库", command=self.out_stock) self.out_button.grid(row=2, column=1, padx=5, pady=5) # 添加显示excel内容的按钮 self.show_button = tk.Button(self.container, text="显示Excel内容", command=self.show_excel) self.show_button.grid(row=3, column=0, columnspan=2, padx=5, pady=5) # 创建标签用于显示工作表名称 self.record_label = tk.Label(self.container1, text="記錄") self.record_label.grid(row=0, column=2, padx=5, pady=5) self.data_label = tk.Label(self.container1, text="數據") self.data_label.grid(row=2, column=2, padx=5, pady=5) # 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"]將這段代碼中第一個容器放到窗口左側,第2個容器放到窗口右側

import requests from bs4 import BeautifulSoup import openpyxl class LianJiaSpider(): def __init__(self): self.url = 'https://bj.lianjia.com/ershoufang/pg{0}/' self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/109'} def send_request(self, url): resp = requests.get(url, headers=self.headers) if resp.status_code == 200: return resp def parse_html(self, resp): lst = [] html = resp.text bs = BeautifulSoup(html, 'lxml') ul = bs.find('ul', class_='sellListContent') li_list = ul.find_all('li') for item in li_list: title = item.find('div', class_='title').text positionInfo = item.find('div', class_='positionInfo').text address = item.find('div', class_='address').text followInfo = item.find('div', class_='followInfo').text tag = item.find('div', class_='tag').text totalPrice = item.find('div', class_='totalPrice totalPrice2').text unitPrice = item.find('div', class_='unitPrice').text # print(unitPrice) lst.append((title, positionInfo, address, followInfo, tag, totalPrice, unitPrice)) print(lst) self.save(lst) def save(self, lst): wb = openpyxl.Workbook() sheet = wb.active for row in lst: sheet.append(row) continue wb.save('D:/爬虫/链家.csv') def start(self): for i in range(1, 5): full_url = self.url.format(i) resp = self.send_request(full_url) #print(resp.text) self.parse_html(resp) if __name__ == '__main__': lianjia = LianJiaSpider() lianjia.start()使用以上代码爬取数据保存到文件中只显示最后一页30条数据,前面页码的数据都被覆盖了,如何更改

def refresh_labels(self): data4 = self.la # 连接到 SQLite 数据库文件,并创建游标对象 cursor() conn = sqlite3.connect(filepath) cursor = conn.cursor() data41 = str(self.la) if not data4.endswith('.xlsx'): data4 += '.xlsx' wo = pinjie filepath = os.path.join(wo, data4) if not os.path.exists(filepath): wb = openpyxl.Workbook() wb.save(filepath) else: wb = openpyxl.load_workbook(filepath) for i, sheet_name in enumerate(self.sheet_names): label = tk.Label(self.unique_listbox, text=sheet_name) label.grid(row=i // 3, column=i % 3, sticky="ew", padx=1, pady=1) current_time = datetime.datetime.now().time() start_time_1 = datetime.time(8, 0, 0) # 早上8点 end_time_1 = datetime.time(20, 0, 0) # 下午7点 start_time_2 = datetime.time(20, 0, 0) # 晚上8点 end_time_2 = datetime.time(7, 0, 0) # 早上7点 for i, sheet_name in enumerate(self.sheet_names): filtered_rows = [] # 优化第二段代码:检查文件是否存在 filepath = os.path.join(pinjie, self.la + '.xlsx') if os.path.exists(filepath): workbook = xl.load_workbook(filepath) sheet = workbook.active today = datetime.datetime.now().strftime('%Y/%m/%d') cell_value = sheet.cell(row=1, column=1).value if cell_value is not None and cell_value != '': for row in sheet.iter_rows(min_row=1): if row[2].value == today and row[8].value == sheet_name: datetime_obj = datetime.datetime.strptime(row[3].value, '%H:%M:%S') row_time = datetime_obj.time() if start_time_1 <= row_time <= end_time_1 and start_time_1 <= current_time <= end_time_1: filtered_rows.append(row) elif start_time_2 <= row_time or current_time <= end_time_2: filtered_rows.append(row) label = self.unique_listbox.grid_slaves(row=i // 3, column=i % 3)[0] if filtered_rows: label.config(text=f"{sheet_name} - 已點檢", fg="green") else: label.config(text=f"{sheet_name} - 未點檢", fg="red")什麽意思

最新推荐

recommend-type

软考-考生常见操作说明-202405101400-纯图版.pdf

软考官网--2024常见操作说明:包括如何绘制网络图、UML图、表格等 模拟作答系统是计算机技术与软件专业技术资格(水平)考试的电子化考试系统界面、作答过程的仿真系统,为各级别、各资格涉及输入和页面显示的部分题型提供体验性练习。
recommend-type

setuptools-34.0.3.zip

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

基于遗传优化GA的三目标优化仿真【包括程序,注释,操作步骤】

1.版本:matlab2022A。 2.包含:程序,中文注释,仿真操作步骤(使用windows media player播放)。 3.领域:遗传优化 4.仿真效果:仿真效果可以参考博客同名文章《基于遗传优化GA的三目标优化仿真》 5.内容:基于遗传优化GA的三目标优化仿真。遗传算法(Genetic Algorithm, GA)是一种模拟自然选择和遗传机制的全局搜索优化方法,广泛应用于解决复杂优化问题,包括具有多个目标的优化问题,即多目标遗传算法(Multi-Objective Genetic Algorithm, MOGA)。在这里,将三个目标函数进行统一的编码,通过单目标遗传优化的方式,同步求解三个目标函数的最优值。 6.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这