python 从1.xlsx文件第一列第二行开始读取数据,每十列写入一个2.xslx文件为模板的第一列,从第二行开始
时间: 2024-09-18 10:12:20 浏览: 32
在Python中,你可以使用pandas库配合openpyxl和xlsxwriter库来完成这个任务。首先,确保安装了这两个库,如果没有可以使用pip安装:
```bash
pip install pandas openpyxl xlsxwriter
```
接下来,我们可以编写一个脚本来实现这个功能:
```python
import pandas as pd
# 读取原始Excel文件
df = pd.read_excel('1.xlsx', sheet_name=0, skiprows=1, usecols='A'+'B'*(10-1), engine='openpyxl') # 从第二行开始读取,并按每十列选择
# 创建一个空的数据列表,用于存储处理后的数据块
data_blocks = []
# 将数据分块,每块包含十列
for i in range(0, df.shape, 10):
data_block = df.iloc[:, i:i+10] # 每次循环取十个连续列
data_blocks.append(data_block)
# 对于每个数据块,写入到新的工作簿并设置为模板的样式
template_df = pd.read_excel('2.xlsx', engine='openpyxl')
for i, block in enumerate(data_blocks):
output_filename = f"output_{i+1}.xlsx"
with pd.ExcelWriter(output_filename, engine='openpyxl') as writer:
template_df.iloc[:, 0].iloc[1:].values.reshape(-1, 1).T.to_frame().T.rename(columns={0: 'Column'}, inplace=True) # 设置模板的第二列为新数据的第一列
block.to_excel(writer, sheet_name='Sheet1', startrow=1, index=False)
# 使用模板的样式覆盖写入的数据
workbook = writer.book
for ws in workbook.sheetnames:
ws = workbook[ws]
new_ws = template_df.sheets[ws.title]
new_ws.protection = ws.protection # 确保保护属性一致
ws.parent.remove(ws) # 移除原数据
new_ws.move_to(ws.position) # 将新工作表移动到原来的位置
阅读全文