继续优化以上代码
时间: 2023-08-11 13:20:39 浏览: 44
好的,以下是对代码的一些优化:
1. 使用 `with` 语句来打开 Excel 文件,可以自动关闭文件,避免资源泄漏。
2. 使用 `iter_rows` 方法时,可以指定起始行和结束行,可以提高查找效率。
3. 在创建新表格时,可以指定表格名称。
4. 在写入新表格时,可以使用 `append` 方法来添加一行数据,而不是直接写入单元格,这样可以方便地添加多行数据。
5. 可以添加一些错误处理,例如判断文件是否存在等。
优化后的代码如下:
```python
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.table import Table, TableStyleInfo
# 定义目标文件和目标数据
target_file = 'target_file.xlsx'
target_data = '特定数据'
# 打开目标Excel文件
try:
with openpyxl.load_workbook(target_file) 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 == target_data:
# 将数据提取出来并保存到一个变量中
data = cell.value
break
else:
continue
break
else:
raise ValueError(f"没有找到 {target_data}。")
# 创建一个新表格
new_workbook = openpyxl.Workbook()
new_worksheet = new_workbook.active
new_worksheet.title = '新表格'
# 将提取出的数据写入新表格的指定位置
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('new_file.xlsx')
print("数据已写入新表格。")
except FileNotFoundError:
print(f"文件 {target_file} 不存在。")
except ValueError as e:
print(e)
except Exception as e:
print(f"发生错误:{e}")
```
以上代码中添加了一些错误处理,例如判断文件是否存在,或者在没有找到目标数据时抛出 `ValueError` 异常。同时,还添加了一个表格样式,使得新表格看起来更加美观。