python 完整复制一个excel文件到另一个文件夹,并保留所有表单,格式和公式
时间: 2024-09-25 10:08:46 浏览: 108
在Python中,你可以使用pandas库结合openpyxl或xlrd/xlwt(如果目标是读取旧版Excel文件)来完成这个任务。这里是一个基本步骤:
1. 首先,确保已经安装了`pandas`, `openpyxl`或`xlrd`和`xlwt`库。如果没有,可以使用pip安装:
```
pip install pandas openpyxl
```
2. 使用pandas读取源Excel文件:
```python
import pandas as pd
source_df = pd.read_excel('source.xlsx')
```
3. 创建一个新的工作簿并复制数据:
- 如果目标是xlsx格式:
```python
target_wb = openpyxl.Workbook()
target_ws = target_wb.active
target_ws.append(source_df.values.tolist())
```
- 如果目标是xls格式,需要使用`xlrd`和`xlwt`组合:
```python
from xlrd import open_workbook
from xlwt import Workbook
source_book = open_workbook('source.xls')
target_wb = Workbook() # 使用xlwt创建新文件
target_ws = target_wb.add_sheet('Sheet1')
for row_num, row_data in enumerate(source_df.values, start=1):
target_ws.write(row_num, 0, *row_data)
```
4. 保存目标工作簿:
- 对于xlsx文件:
```python
target_wb.save('target.xlsx')
```
- 对于xls文件:
```python
target_wb.save('target.xls')
```
5. 为了确保公式也被复制,你需要遍历每个单元格检查是否包含公式,然后使用openpyxl的`Cell formulas`属性设置:
```python
def copy_formulas(target_ws, source_ws):
for source_row in source_ws.iter_rows():
for col_idx, cell in enumerate(source_row, start=1):
if cell.formula is not None:
target_ws.cell(row=cell.row, column=col_idx).formula = cell.formula
copy_formulas(target_ws, source_ws)
```
最后运行上述代码即可。
阅读全文