继续优化
时间: 2023-06-30 16:24:04 浏览: 36
好的,以下是对代码的一些进一步优化:
1. 将代码封装成函数,方便重复使用。
2. 添加了一些注释,使得代码更易读。
3. 将目标数据和新表格文件名作为函数参数,使得函数更加通用。
4. 将提取数据和写入新表格的操作分别封装成两个函数,方便进行单独调用和测试。
优化后的代码如下:
```python
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.table import Table, TableStyleInfo
def extract_data_from_excel(file_name, data):
"""
从 Excel 文件中提取目标数据。
:param file_name: Excel 文件名。
:param data: 目标数据。
:return: 如果找到目标数据,则返回该数据;否则返回 None。
"""
try:
with openpyxl.load_workbook(file_name) as workbook:
worksheet = workbook.active
# 找到特定数据所在的单元格
start_row, end_row = 1, worksheet.max_row
for row in worksheet.iter_rows(min_row=start_row, max_row=end_row):
for cell in row:
if cell.value == data:
# 将数据提取出来并返回
return cell.value
else:
return None
except FileNotFoundError:
print(f"文件 {file_name} 不存在。")
except Exception as e:
print(f"发生错误:{e}")
return None
def write_data_to_excel(file_name, data, sheet_name='Sheet1'):
"""
将数据写入 Excel 文件中。
:param file_name: Excel 文件名。
:param data: 要写入的数据。
:param sheet_name: 新表格的名称,默认为 Sheet1。
"""
try:
# 创建一个新表格
new_workbook = openpyxl.Workbook()
new_worksheet = new_workbook.active
new_worksheet.title = sheet_name
# 将提取出的数据写入新表格的指定位置
new_worksheet.append([data])
# 添加表格样式
table = Table(displayName="Table1", ref="A1:A1")
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
showLastColumn=False, showRowStripes=True, showColumnStripes=False)
table.tableStyleInfo = style
new_worksheet.add_table(table)
# 保存新表格
new_workbook.save(file_name)
print(f"数据已写入文件 {file_name} 中。")
except Exception as e:
print(f"发生错误:{e}")
# 测试代码
if __name__ == '__main__':
target_file = 'target_file.xlsx'
target_data = '特定数据'
new_file = 'new_file.xlsx'
# 从目标 Excel 文件中提取目标数据
data = extract_data_from_excel(target_file, target_data)
if data is None:
print(f"文件 {target_file} 中没有找到 {target_data}。")
else:
# 将提取出的数据写入新的 Excel 文件中
write_data_to_excel(new_file, data, sheet_name='Sheet1')
```
以上代码中,我们将提取数据和写入新表格的操作分别封装成两个函数,方便进行单独调用和测试。同时,我们将目标数据和新表格文件名作为函数参数,使得函数更加通用。