wb=openpyxl.Workbook() ws=wb['Sheet'] ws.cell(1,1).value="产地\销地" ws.cell(1,TotalColumn+2).value="产量" ws.cell(TotalRow+2,1).value="销量" ws.cell(TotalRow+2,TotalColumn+2).value=sum(ProductionValue) for i in range(2,TotalRow+2): ws.cell(i, 1).value = ProductionKey[i-2] ws.cell(i,TotalColumn+2).value=ProductionValue[i-2] for j in range(2,TotalColumn+2): ws.cell(1, j).value =SaleKey[j-2] ws.cell(TotalRow+2,j).value=SaleValue[j-2] ws.cell(i,j).value=CostValue[(i-2)*TotalColumn+j-2] wb.save("data.xlsx")
时间: 2024-05-04 11:18:04 浏览: 55
这段代码使用了Python中的openpyxl库来创建一个Excel文档,并向其中写入数据。它创建了一个名为"Sheet"的工作表,并在第一行第一列写入了"产地\销地",在最后一行最后一列写入了所有产量之和(通过sum函数计算得出),然后使用两个for循环遍历所有行和列,将对应的值写入工作表中。其中,ProductionKey和ProductionValue是产地和产量的键值对,SaleKey和SaleValue是销地和销量的键值对,CostValue是一个包含所有成本的列表。最后,使用wb.save()方法保存Excel文档。
相关问题
wb1 = openpyxl.load_workbook(source_file) ws1 = wb1.active wb2 = openpyxl.load_workbook(target_file) wb2_oldsheetname = wb2.sheetnames target_ws_name = 'sd' + source_file[-6] wb2.active.title = target_ws_name ws2 = wb2.active python修改sheet名后为target_ws_name,使用pandas如何更新表格里包含图表的引用数据源中数据系列涉及到的sheet名,更新并输出代码
可以使用 Pandas 中的 `read_excel` 方法读取表格,然后使用 `to_excel` 方法输出修改后的表格。在 `read_excel` 方法中,可以通过 `sheet_name` 参数指定要读取的工作表名称。在 `to_excel` 方法中,可以通过 `sheet_name` 参数指定要输出的工作表名称。
为了更新包含图表的引用数据源中的数据系列涉及到的工作表名称,可以使用正则表达式和字符串替换来完成。具体操作步骤如下:
1. 读取表格文件到 Pandas DataFrame 中。
```
import pandas as pd
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
```
2. 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称。
```
import re
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
```
3. 将更新后的 DataFrame 输出到表格文件中。
```
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
完整代码如下:
```
import pandas as pd
import re
import openpyxl
wb1 = openpyxl.load_workbook(source_file)
ws1 = wb1.active
wb2 = openpyxl.load_workbook(target_file)
wb2_oldsheetname = wb2.sheetnames
target_ws_name = 'sd' + source_file[-6]
wb2.active.title = target_ws_name
ws2 = wb2.active
# 读取表格文件到 Pandas DataFrame 中
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
# 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
# 将更新后的 DataFrame 输出到表格文件中
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
用xlrd 库实现:# 打开源Excel表格 src_wb = openpyxl.load_workbook('花名册批量添加模板.xls') # 打开目标Excel表格 dst_wb = openpyxl.load_workbook('花名册批量更新模板.xls') # 获取源Excel表格中的第一个工作表 src_ws = src_wb.active # 获取目标Excel表格中的第一个工作表 dst_ws = dst_wb.active # 循环读取A2、A3等单元格数据,并写入到目标Excel表格中 for i in range(2, src_ws.max_row + 1): cell_value = src_ws.cell(row=i, column=1).value dst_ws.cell(row=i - 1, column=1).value = cell_value # 保存目标Excel表格 dst_wb.save('花名册批量更新模板.xls')
使用 xlrd 库实现该代码可以参考以下代码:
```
import xlrd
import openpyxl
# 打开源Excel表格
src_wb = xlrd.open_workbook('花名册批量添加模板.xls')
# 打开目标Excel表格
dst_wb = openpyxl.load_workbook('花名册批量更新模板.xls')
# 获取源Excel表格中的第一个工作表
src_ws = src_wb.sheet_by_index(0)
# 获取目标Excel表格中的第一个工作表
dst_ws = dst_wb.active
# 循环读取A2、A3等单元格数据,并写入到目标Excel表格中
for i in range(1, src_ws.nrows):
cell_value = src_ws.cell_value(i, 0)
dst_ws.cell(row=i+1, column=1).value = cell_value
# 保存目标Excel表格
dst_wb.save('花名册批量更新模板.xls')
```
其中,`xlrd.open_workbook()` 方法用于打开 Excel 文件,`sheet_by_index()` 方法用于获取工作表对象,`nrows` 属性用于获取工作表的行数,`cell_value()` 方法用于读取单元格数据。注意,由于 xlrd 库和 openpyxl 库的用法有所不同,因此在写入目标 Excel 文件时,需要将 `row` 和 `column` 参数分别加 1,以匹配 openpyxl 库的用法。