ヒント | 80 行のコードでテーブルの分割と結合のガジェットを自分で作成する
最近、新しい友達が以前の記事「Excel を実装するための Python と VBA の比較」を目にしました。テーブルの結合と分割「Split 」、 テーブル を分割、結合できる無料のガジェットがあるかどうかお聞きしたいです。実はwps
にはこの2つの機能があり、その効果は非常に優れています。ただし、誰もが wps
に慣れていない可能性があることを考慮して、ここでは、誰もが満足できる簡単なツールを作成します。
まずはガジェットの操作プロセスを見てみましょう。
マージと分割の効果は次のとおりです。

次に、試してみましょう。このツールを自分で書いてみてください。
1. 事前準備
ツールの作成には python
を使用し、最終的にはパッケージ化する必要があるため、私たちが使用する exe
ファイル。パッケージのサイズを減らすには、まずバックアップ用の 仮想環境
を作成する必要があります。
さらに、テーブルの分割と結合操作にはサードパーティ ライブラリ pandas
が使用され、同時に GUI には pysimplegui
が使用されます。 exe にパッケージ化されています。その 1 つは pyinstaller
です。仮想環境を作成したら、使用するサードパーティ製ライブラリを一つずつインストールしていきましょう。
# 创建虚拟环境 conda create -n env_1 python=3.8.8 # 激活虚拟环境 conda activate env_1 # 安装三个库 (pandas一些操作需要依赖openpyxl和xlrd,建议加上) pip install pandas pip install openpyxl pip install xlrd pip install pysimplegui pip install pyinstaller
これら 3 つのライブラリについては、公式ドキュメントを確認して詳細を確認できます:
pandas : https://pandas.pydata。 org/
##pysimplegui:https://pysimplegui.readthedocs.io/en/latest/
# # pyinstaller: http://www.pyinstaller.org/
初期準備ツールの準備が整ったので、ツールの作成段階に入ります。
2. 表格拆分
Python实现表格拆分的逻辑比较简单,就是利用pandas
分组然后将每组的数据单独导出存表即可
原表数据长这样:

# 拆分表格 def splitTable(df,_key): print('----------正在进行表格拆分----------') df = df.astype('str') # 按照字段_key进行分组 grouped = df.groupby(by = _key) # 输出分组数据导出成单表 for num , (i, data) in enumerate(grouped): data.to_excel(f'.\\{i}.xlsx',index = False,sheet_name = i) print(f'已经拆成{num+1}张表格...')
导出结果如下:

3. 表格合并
Python实现表格合并的本质是 遍历全部表格数据,然后采用concat
方法进行数据合并Pandas学习笔记02-数据合并。
因此,在这里我们主要用到两个库:os
和pandas
,其中os用于获取文件夹下全部满足要求的文件信息,pandas用于读取表格数据并进行concat
。
# 合并表格 def concatTable(folder): print('----------正在进行表格合并----------') # 新建一个空列表,用于存储表格数据 fileList = [] # 把文件夹下表格数据放在一个列表里 for fileName in os.walk(folder): for table in fileName[2]: path = fileName[0] + '\\' + table if os.path.splitext(path)[1] in ('.xlsx','.xls'): li = pd.read_excel(path) fileList.append(li) print(f'已读取{len(fileList)}个表格...') else: continue # 用concat方法合并表单数据 result = pd.concat(fileList) # 导出数据 result.to_excel(r'.\合并后文件.xlsx',index=False,sheet_name='汇总')
4. GUI设计
因为要支持表格拆分和合并,我们已经在2和3部分将这两个功能封装为函数了。
GUI の機能部分に関しては、以下の機能をサポートする必要があります。
テーブル分割部分の関数ポイント:
ファイルの選択: <span style="font-size: 14px;">Text</span>
、<span style="font-size: 14px;">InputText</span>
、<span style="font-size: 14px;">FileBrowse</span>
ファイルの読み取り後にフィールド選択を分割: #Text<span style="font-size: 14px;"></span>
、Combo<span style="font-size: 14px;"></span>
Split: Button<span style="font-size: 14px;"></span>
##テーブル マージ部分、ファンクション ポイントの場合:
选取文件夹: <span style="font-size: 14px;">Text</span>
、<span style="font-size: 14px;">InputText</span>
、<span style="font-size: 14px;">FolderBrowse</span>
合并: <span style="font-size: 14px;">Button</span>
此外,我们还需要有用于展示 程序操作记录的输出框、工具操作说明文本以及关闭程序按钮。
基于以上需求,我们可以构建GUI布局如下:
# 布局设置 layout = [[sg.Text('选择待拆分的文件:',font=("微软雅黑", 12)),sg.InputText(key='file',size=(60,1),font=("微软雅黑", 10),enable_events=True) ,sg.FileBrowse('打开',file_types=(("Text Files", "*.xls*"),),font=("微软雅黑", 12))], [sg.Text('选择待拆分的字段:',font=("微软雅黑", 12)),sg.Combo('',tooltip='选择用于拆分的字段',font=("微软雅黑", 10), default_value='',auto_size_text=True,size=(15, 5),key='-keys-'),sg.Button('开始拆分',font=("微软雅黑", 12))], [sg.Text('选择待合并文件夹:',font=("微软雅黑", 12)),sg.InputText(key='Folder',size=(60,1),font=("微软雅黑", 10),enable_events=True) ,sg.FolderBrowse('打开文件夹',font=("微软雅黑", 12)),sg.Button('开始合并',font=("微软雅黑", 12))], [sg.Text('程序操作记录:',justification='center')], [sg.Output(size=(100, 10),font=("微软雅黑", 10))], [sg.Text('操作说明:',font=("微软雅黑", 12))], [sg.Text('表格拆分指引:选择文件—>选择用于拆分的字段—>开始拆分\n表格合并指引:选择需要合并的表格所在文件夹—>开始合并',font=("微软雅黑", 10)),sg.Text('',font=("微软雅黑", 12),size=(35, 1)),sg.Button('关闭程序',font=("微软雅黑", 12),button_color ='red')] ]
由于我们在进行表格拆分时需要先选定文件及拆分字段,而拆分字段是在选定文件后读取到的文件数据的表头,所以需要在sg.InputText()
中将参数enable_events
设置为True
,这样选定文件操作就是一个事件,可以触发某些操作。
接下来,我们编写循环事件功能如下:
# 事件循环 while True: event, values = window.read() if event in (None, '关闭程序'): break if event == 'file': fileName = values['file'] if os.path.exists(fileName): df = pd.read_excel(fileName) keys = df.columns.to_list() window["-keys-"].Update(values = keys,font=("微软雅黑", 10),size=(15, 8)) else: print('文件不存在\n请先选择正确文件') if event == '开始拆分': if values['-keys-']: _key = values['-keys-'] splitTable(df,_key) print('----------拆分工作已经完成----------\n') else: print('字段未选择-请先选择字段\n或文件未选取-请先选择文件') if event == '开始合并': if values['Folder']: folder = values['Folder'] concatTable(folder) print('----------合并工作已经完成----------\n') else: print('待合并文件所在文件夹未选择') window.close()
根据需求,我们将事件类型分为三种:
当我们选定待拆分文件后,先读取文件内容,然后获取文件数据的表头,从而刷新( window["-keys-"].Update
)拆分字段的下拉框为表头内容;当我们点击开始拆分按钮时,需要判断拆分字段是否选取(默认为空),若有选定字段则进行拆分操作,否则会进行错误操作提示; 当我们点击开始合并按钮时,需要判断是否选定了文件夹,若是则调用合并数据函数进行合并操作,否则会进行错误操作提示。
5. 打包代码
这里采用的是pyinstaller
进行程序代码打包,操作指令如下:
pyinstaller -F -w 表格拆分合并工具.py
部分参数含义:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
以上がヒント | 80 行のコードでテーブルの分割と結合のガジェットを自分で作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

MySQLのインストール障害の主な理由は次のとおりです。1。許可の問題、管理者として実行するか、SUDOコマンドを使用する必要があります。 2。依存関係が欠落しており、関連する開発パッケージをインストールする必要があります。 3.ポート競合では、ポート3306を占めるプログラムを閉じるか、構成ファイルを変更する必要があります。 4.インストールパッケージが破損しているため、整合性をダウンロードして検証する必要があります。 5.環境変数は誤って構成されており、環境変数はオペレーティングシステムに従って正しく構成する必要があります。これらの問題を解決し、各ステップを慎重に確認して、MySQLを正常にインストールします。

mysqlダウンロードファイルは破損していますが、どうすればよいですか?残念ながら、MySQLをダウンロードすると、ファイルの破損に遭遇できます。最近は本当に簡単ではありません!この記事では、誰もが迂回を避けることができるように、この問題を解決する方法について説明します。それを読んだ後、損傷したMySQLインストールパッケージを修復するだけでなく、将来の行き詰まりを避けるために、ダウンロードとインストールプロセスをより深く理解することもできます。最初に、ファイルのダウンロードが破損した理由について話しましょう。これには多くの理由があります。ネットワークの問題は犯人です。ダウンロードプロセスの中断とネットワーク内の不安定性は、ファイル腐敗につながる可能性があります。ダウンロードソース自体にも問題があります。サーバーファイル自体が壊れており、もちろんダウンロードすると壊れています。さらに、いくつかのウイルス対策ソフトウェアの過度の「情熱的な」スキャンもファイルの破損を引き起こす可能性があります。診断問題:ファイルが本当に破損しているかどうかを判断します

MySQLは、基本的なデータストレージと管理のためにネットワーク接続なしで実行できます。ただし、他のシステムとのやり取り、リモートアクセス、または複製やクラスタリングなどの高度な機能を使用するには、ネットワーク接続が必要です。さらに、セキュリティ対策(ファイアウォールなど)、パフォーマンスの最適化(適切なネットワーク接続を選択)、およびデータバックアップは、インターネットに接続するために重要です。

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLは開始を拒否しましたか?パニックにならないでください、チェックしてみましょう!多くの友人は、MySQLのインストール後にサービスを開始できないことを発見し、彼らはとても不安でした!心配しないでください、この記事はあなたがそれを落ち着いて対処し、その背後にある首謀者を見つけるためにあなたを連れて行きます!それを読んだ後、あなたはこの問題を解決するだけでなく、MySQLサービスの理解と問題のトラブルシューティングのためのあなたのアイデアを改善し、より強力なデータベース管理者になることができます! MySQLサービスは開始に失敗し、単純な構成エラーから複雑なシステムの問題に至るまで、多くの理由があります。最も一般的な側面から始めましょう。基本知識:サービススタートアッププロセスMYSQLサービススタートアップの簡単な説明。簡単に言えば、オペレーティングシステムはMySQL関連のファイルをロードし、MySQLデーモンを起動します。これには構成が含まれます
