将结果写入同一Excel文件的两个不同工作表中

5 投票
4 回答
25836 浏览
提问于 2025-04-18 16:30

你能教我一下Python能不能往同一个Excel文件里写入两个不同的工作表(标签)吗?

举个例子,我想把下面四个网站的标题提取出来,然后分别写进同一个文件title.xls的Sheet1和Sheet2里。

www.dailynews.com
www.dailynews.co.zw
www.gulf-daily-news.com
www.dailynews.gov.bw

我用两个脚本来处理,每个脚本处理两个网站:

from bs4 import BeautifulSoup
import urllib2
import xlwt

line_in_list = ['www.dailynews.com','www.dailynews.co.zw'] 
# line_in_list = [www.gulf-daily-news.com','www.dailynews.gov.bw']

book = xlwt.Workbook(encoding='utf-8', style_compression = 0)
sheet = book.add_sheet('Sheet1', cell_overwrite_ok = True) 
# sheet = book.add_sheet('Sheet2', cell_overwrite_ok = True)

for cor,websites in enumerate(line_in_list):
    url = "http://" + websites
    page = urllib2.urlopen(url)
    soup = BeautifulSoup(page.read())
    site_title = soup.find_all("title")
    print site_title
    sheet.write (cor, 0, site_title[0].text)

book.save("title.xls")

但是,脚本总是覆盖工作表。我只能得到Sheet1或者Sheet2,不能同时有两个。

有什么帮助吗?谢谢。

4 个回答

0
--Append Excel Data Sheet to Spreadsheet

首先,我们导入了一个叫做 pandas 的库,这个库可以帮助我们处理数据。

接下来,我们从两个 CSV 文件中读取数据,分别是 'MyData1.csv' 和 'MyData2.csv',并把它们存储在 df1 和 df2 这两个变量里。

然后,我们打印出这两个数据,看看里面有什么内容。

接着,我们使用一个叫做 merge 的方法,把这两个数据合并在一起,生成一个新的数据表 Differences_df。这里的合并方式是 'outer',意思是把两个数据表的所有内容都放在一起,并标记出哪些数据来自哪个表。

最后,我们把合并后的数据保存到一个 Excel 文件 'MyInputData.xlsx' 中,放在一个叫做 'Diff' 的工作表里。

处理完这些表格后,我们打印出一条信息,告诉大家处理已经完成。

2

当然可以!请看下面的内容:

在编程中,很多时候我们需要让程序做一些重复的事情。比如说,我们想要让程序计算从1加到10的总和。为了实现这个目标,我们可以使用一个叫“循环”的工具。循环就像是一个机器,可以不停地重复做同样的事情,直到我们说“停”。

在这个例子中,我们可以用循环来让程序从1加到10。每次循环的时候,程序会把当前的数字加到一个总和上,然后再把数字加1,直到它达到10为止。这样,我们就能轻松地得到1到10的总和,而不需要手动去加每一个数字。

循环有很多种类型,比如“for循环”和“while循环”。“for循环”通常用来处理已知次数的重复,而“while循环”则是在我们不知道要重复多少次的情况下使用。无论是哪种循环,它们的目的都是为了让我们的代码更简洁、更高效。

希望这个解释能帮助你理解循环的基本概念!

import numpy as np 
import pandas as pd

# Create a Dataframe
df1 = pd.DataFrame(np.random.rand(100).reshape(50,2),columns=['a','b'])
df2 = pd.DataFrame(np.random.rand(100).reshape(50,2),columns=['a','b'])

# Excel path
excelpath = 'path_to_your_excel.xlsx'

# Write your dataframes to difference sheets

with pd.ExcelWriter(excelpath) as writer:
    df1.to_excel(writer,sheet_name='Sheet1')
    df2.to_excel(writer,sheet_name = 'Sheet2')


""" I noticed that the above script overwrite all existing columns of in 
the excel. In case you want to keep some columns and sheet untouched, 
you might consider doing it the following way"""

import pandas as pd
import numpy as np
from openpyxl import load_workbook

book = load_workbook(excelpath)
writer = pandas.ExcelWriter(excelpath, engine='openpyxl') 
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df1.to_excel(writer, "Sheet1", columns=['a', 'b']) # only columns 'a' and 'b' will be populated 
df2.to_excel(writer,"Sheet2",columns=['a','b']) # only columns 'a' and 'b' will be populated 

writer.save()
8

你也可以使用pandas来实现这个功能。

import pandas as pd

# Add your data in list, which may contain a dictionary with the name of the      
# columns as the key
df1 = pd.DataFrame({'website': ['www.dailynews.com', 'www.dailynews.co.zw']})
df2 = pd.DataFrame({'website': ['www.gulf-daily-news.com', 'www.dailynews.gov.bw']})

# Create a new excel workbook
writer = pd.ExcelWriter('title.xlsx', engine='xlsxwriter')

# Write each dataframe to a different worksheet.
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')

# Save workbook
writer.close()
4

如果我理解得没错的话,你需要的就是这个。抱歉,我不能评论来让它更清楚。

sheet1 = book.add_sheet('Sheet1', cell_overwrite_ok = True) 
sheet2 = book.add_sheet('Sheet2', cell_overwrite_ok = True)
sheet1.write (cor, 0, site_title[0].text)
sheet2.write (cor, 0, site_title[0].text)

撰写回答