Python3腳本實現(xiàn)Excel與TXT的智能轉(zhuǎn)換
在數(shù)據(jù)處理的日常工作中,我們經(jīng)常需要將Excel中的結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為其他格式。本文將手把手教你如何用Python輕松實現(xiàn)Excel到TXT的智能轉(zhuǎn)換,讓重復(fù)性工作自動化,效率提升立竿見影!
場景應(yīng)用:為什么需要這種轉(zhuǎn)換
當(dāng)遇到以下場景時,這個腳本將成為你的得力助手:
- 批量生成配置文件:將服務(wù)器配置信息從Excel快速生成可部署的文本文件
- 問卷數(shù)據(jù)處理:將收集到的開放式問題答案自動整理成獨立文檔
- 文檔自動化生成:根據(jù)產(chǎn)品參數(shù)表快速創(chuàng)建產(chǎn)品說明文檔
- 多語言資源處理:將翻譯好的多語言文本批量生成對應(yīng)語言包文件
- 數(shù)據(jù)分析預(yù)處理:將特定列數(shù)據(jù)提取為機器學(xué)習(xí)可讀的文本格式
技術(shù)解析:代碼實現(xiàn)詳解
核心代碼展示
import openpyxl
import os
def xlsx_to_txt(file_path, output_dir="output", header_row=1):
"""
將Excel文件內(nèi)容轉(zhuǎn)換為多個TXT文件
參數(shù):
file_path (str): Excel文件路徑
output_dir (str): 輸出目錄,默認(rèn)為"output"
header_row (int): 標(biāo)題行數(shù),默認(rèn)為1
"""
try:
# 創(chuàng)建輸出目錄
os.makedirs(output_dir, exist_ok=True)
# 加載Excel工作簿
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active
# 遍歷每一行
for row_num, row in enumerate(sheet.iter_rows(values_only=True), start=1):
if row_num > header_row: # 跳過標(biāo)題行
# 檢查序號列是否為空
if row[0] is None:
print(f"警告:第{row_num}行缺少序號,已跳過")
continue
# 檢查內(nèi)容列是否為空
if row[1] is None:
print(f"警告:第{row_num}行內(nèi)容為空,已跳過")
continue
# 清理文件名中的非法字符
safe_filename = "".join(c for c in str(row[0]) if c.isalnum() or c in (' ', '_')).rstrip()
if not safe_filename:
print(f"警告:第{row_num}行文件名無效,已跳過")
continue
# 寫入文件
output_path = os.path.join(output_dir, f"{safe_filename}.txt")
try:
with open(output_path, "w", encoding="utf-8") as txt_file:
txt_file.write(str(row[1]))
print(f"成功創(chuàng)建文件: {output_path}")
except Exception as e:
print(f"錯誤:無法寫入文件 {output_path} - {str(e)}")
except FileNotFoundError:
print(f"錯誤:文件 {file_path} 不存在!")
except Exception as e:
print(f"程序運行出錯: {str(e)}")
# 示例調(diào)用
xlsx_to_txt('data.xlsx')
改進點說明
1.輸出目錄管理
新增output_dir參數(shù),自動創(chuàng)建輸出目錄
2.文件名安全處理
過濾文件名中的非法字符,避免創(chuàng)建文件失敗
3.空值雙重檢查
同時檢查文件名和內(nèi)容列,確保數(shù)據(jù)完整性
4.錯誤處理增強
添加全面的異常捕獲,提高程序健壯性
5.進度反饋
添加成功/失敗提示,方便追蹤處理結(jié)果
實戰(zhàn)演練:從Excel到TXT的完整流程
準(zhǔn)備數(shù)據(jù)示例(data.xlsx)

執(zhí)行轉(zhuǎn)換
data.xlsx與test.py再同一級目錄
python3 test.py
生成結(jié)果
成功創(chuàng)建文件: output/10.txt
警告:第3行缺少序號,已跳過
成功創(chuàng)建文件: output/12.txt
警告:第5行內(nèi)容為空,已跳過
成功創(chuàng)建文件: output/14.txt
警告:第7行缺少序號,已跳過
成功創(chuàng)建文件: output/16.txt
成功創(chuàng)建文件: output/17.txt
成功創(chuàng)建文件: output/18.txt

功能擴展:按需定制你的轉(zhuǎn)換器
1.多列內(nèi)容合并
content = '\n'.join([str(cell) for cell in row[1:] if cell])
2.自動編號
filename = f"{row_num}_{safe_filename}"
3.保留原始格式
from openpyxl.styles import numbers
if cell.number_format == numbers.FORMAT_DATE_XLSX22:
# 處理日期格式
4.添加日志系統(tǒng)
import logging logging.basicConfig(filename='converter.log', level=logging.INFO)
最佳實踐與避坑指南
1.數(shù)據(jù)預(yù)處理
- 使用Excel的"數(shù)據(jù)驗證"功能確保文件名列的合法性
- 檢查特殊字符:/\:*?"<>|等Windows禁用字符
2.性能優(yōu)化
- 對于10萬行以上數(shù)據(jù),改用csv模塊讀取
- 使用with語句批量處理文件寫入
3.異常處理
- 添加文件權(quán)限檢查
- 處理磁盤空間不足的情況
4.版本兼容
- 支持.xlsx格式(openpyxl)
- 如需處理.xls文件,可改用xlrd庫
應(yīng)用場景升級:企業(yè)級解決方案
對于更復(fù)雜的業(yè)務(wù)需求,可以擴展為:
1.云端部署方案
- 通過Flask構(gòu)建Web服務(wù)
- 支持文件上傳和結(jié)果下載
2.郵件自動發(fā)送
import smtplib # 將生成的txt文件作為附件自動發(fā)送
3.數(shù)據(jù)庫集成
import sqlite3 # 將轉(zhuǎn)換記錄存入數(shù)據(jù)庫
4.日志監(jiān)控系統(tǒng)
import logging logging.basicConfig(filename='converter.log')
以上就是Python3腳本實現(xiàn)Excel與TXT的智能轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Python3 Excel轉(zhuǎn)TXT的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python人工智能tensorflow函數(shù)tf.nn.dropout使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.nn.dropout使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
Python語法學(xué)習(xí)之進程的創(chuàng)建與常用方法詳解
本文我們將學(xué)習(xí)一下在?Python?中去創(chuàng)建并使用多進程的方法,可以通過創(chuàng)建多個進程來幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下2022-04-04
Python數(shù)據(jù)分析之Excel和Text文件的讀寫操作方法
Python操作Excel分為兩個主要形式,讀寫和交互式操作,可以用不同的第三方工具,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之Excel和Text文件的讀寫操作方法,需要的朋友可以參考下2024-08-08
Python如何生成隨機數(shù)及random隨機數(shù)模塊應(yīng)用
這篇文章主要介紹了Python如何生成隨機數(shù)及random隨機數(shù)模塊應(yīng)用,首先我們要知道在python中用于生成隨機數(shù)的模塊是random,在使用前需要import。由此展開內(nèi)容介紹,需要的小伙伴可以參考一下2022-06-06
淺談Python函數(shù)式編程的返回函數(shù)與匿名函數(shù)
這篇文章主要介紹了淺談Python函數(shù)式編程的返回函數(shù)與匿名函數(shù),如果一個變量指向了一個函數(shù),那么,可以通過該變量來調(diào)用這個函數(shù),需要的朋友可以參考下2023-04-04

