excel 主表抓取同一个文件夹内其他表格的数据
时间: 2023-02-15 12:57:21 浏览: 156
,如何操作呢?Excel 的数据抓取有很多种方法,你可以使用 VLOOKUP 函数,或者使用 Power Query。如果你不熟悉这些函数,建议你先学习一下。使用 VLOOKUP 函数,你可以在主表中查找其他表格的数据,并将其显示在主表中。使用 Power Query,你可以轻松地从多个表格中提取数据,并将其合并到一个表格中。如果你需要更详细的帮助,请告诉我你使用的 Excel 版本,以及你想要实现的效果。
相关问题
如何在多个文件里提取表格,并合并到另一个文件夹中
在多个文件中提取表格并合并到一个文件夹中通常涉及到两个步骤:数据抓取和数据整合。这可以使用一些文本处理工具如Python的Pandas库、Microsoft Excel的公式或第三方软件(如Tableau、Google Sheets等)。这里以Python为例,假设所有文件都是CSV格式:
1. **安装必要的库**:
如果还没有安装pandas,可以运行 `pip install pandas` 来安装。
2. **读取文件并提取表格**:
使用pandas库的`read_csv()`函数逐个读取每个文件中的表格:
```python
import os
import pandas as pd
# 指定包含源文件的目录
source_folder = 'source_folder_path'
tables = []
for filename in os.listdir(source_folder):
if filename.endswith('.csv'): # 只处理CSV文件
file_path = os.path.join(source_folder, filename)
table = pd.read_csv(file_path)
tables.append(table)
```
3. **合并表格**:
将读取的所有表格合并成一个大表:
```python
merged_table = pd.concat(tables)
```
4. **保存结果**:
完成合并后,将结果保存到指定的目标文件夹:
```python
target_folder = 'target_folder_path'
if not os.path.exists(target_folder):
os.makedirs(target_folder)
output_filename = 'merged_data.csv'
output_path = os.path.join(target_folder, output_filename)
merged_table.to_csv(output_path, index=False) # 不保留索引
```
抓取国家电⽹电⼦商务平台所有招标公告,下载“项⽬公告⽂件” 将下载的项⽬公告⽂件解压后,寻找有'货物清单'字样的Excel表格, 将所有的货物清单统⼀合并成⼀个csv⽂件 获取货物清单Excel表格中的指定共15列数据 '包号', '⽹省采购申请⾏号', '项⽬单位', '需求单位', '项⽬名称', '⼯程电压等级', '物资名称', '物资描 述','单位', '数量', '交货⽇期', '交货地点', '备注', '技术规范ID', '状态' 其中'状态'列是后期添加列,指的是本标书的项⽬状态,例如'已经截标','正在评标','评标结束'等 状态 写出代码
好的,下面是一个Python代码示例,用于抓取国家电网电子商务平台所有招标公告,下载“项目公告文件”,解压后寻找包含“货物清单”字样的Excel表格,提取指定的15列数据并保存为一个CSV文件:
```python
import os
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from zipfile import ZipFile
# 设置Chrome浏览器的驱动程序路径
driver_path = "chromedriver.exe"
# 设置Chrome浏览器的下载文件夹路径
download_path = "D:/downloads"
# 创建Chrome浏览器实例,并设置下载文件夹路径和禁用图片加载
chrome_options = webdriver.ChromeOptions()
prefs = {"download.default_directory": download_path, "profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(driver_path, chrome_options=chrome_options)
# 打开国家电网电子商务平台并登录
browser.get("https://b2bepc.sgcc.com.cn/")
# TODO: 在此处填写登录账号和密码
username = "your_username"
password = "your_password"
browser.find_element_by_id("username").send_keys(username)
browser.find_element_by_id("password").send_keys(password)
browser.find_element_by_id("login_btn").click()
# 进入招标信息页面并获取所有招标信息的链接
browser.get("https://b2bepc.sgcc.com.cn/web/supplier/bidding/biddinginfo?viewType=4")
wait = WebDriverWait(browser, 10)
all_links = []
while True:
links = browser.find_elements_by_xpath("//a[contains(@href,'/web/supplier/bidding/biddinginfo/view')]")
for link in links:
all_links.append(link.get_attribute("href"))
try:
next_page = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@title='下一页']")))
next_page.click()
time.sleep(2)
except:
break
# 循环访问每个招标信息的链接,下载项目公告文件并解压缩
for link in all_links:
browser.get(link)
try:
wait.until(EC.presence_of_element_located((By.XPATH, "//a[contains(text(),'项目公告文件')]")))
download_btn = browser.find_element_by_xpath("//a[contains(text(),'项目公告文件')]")
download_btn.click()
time.sleep(5) # 等待下载完成
# 解压缩项目公告文件并寻找包含“货物清单”字样的Excel表格
zip_file = max([download_path + "/" + f for f in os.listdir(download_path) if f.endswith(".zip")], key=os.path.getctime)
with ZipFile(zip_file, 'r') as zip:
for filename in zip.namelist():
if "货物清单" in filename and filename.endswith(".xls"):
excel_file = download_path + "/" + filename
break
# 读取Excel表格并提取指定的15列数据
df = pd.read_excel(excel_file, engine='xlrd', usecols=['包号', '网省采购申请行号', '项目单位', '需求单位', '项目名称', '工程电压等级', '物资名称', '物资描述', '单位', '数量', '交货日期', '交货地点', '备注', '技术规范ID'])
# 添加“状态”列并保存为CSV文件
df['状态'] = ''
csv_file = download_path + "/" + "all_data.csv"
if os.path.exists(csv_file):
df.to_csv(csv_file, mode='a', header=False, index=False)
else:
df.to_csv(csv_file, index=False)
except:
pass
# 关闭浏览器
browser.quit()
```
需要注意的是,由于国家电网电子商务平台的页面结构可能会发生变化,因此以上代码仅供参考,具体实现需要根据实际情况进行调整。另外,在实现过程中,需要遵守相关法律法规,避免侵犯他人的合法权益。
阅读全文