博主介绍:✌全网粉丝21W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌
技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。
python如何把数据导出生成excel
一、前言
在Python中,将数据导出生成Excel文件,最常用的库之一是openpyxl(用于处理.xlsx文件)和pandas(提供了更高级的数据处理功能,并且可以很方便地将DataFrame导出到Excel)。以下将分别介绍如何使用这两个库来生成Excel文件。
二、使用openpyxl生成Excel文件
如果你只想使用openpyxl
来生成Excel文件,你可以手动创建工作簿、工作表,并写入数据。
from openpyxl import Workbook
# 创建一个工作簿
wb = Workbook()
# 激活工作表
ws = wb.active
# 更改工作表的标题
ws.title = "Demo Sheet"
# 写入数据
ws.append([1, 2, 3]) # 写入一行数据,这将占居第一行
ws['A2'] = 'Hello' # 直接指定单元格写入数据
ws.cell(row=3, column=2, value="World") # 通过行号和列号写入数据
# 保存工作簿
wb.save("demo.xlsx")
运行上述代码即可得到一个excel文件。
二、使用pandas生成Excel文件
如果你的数据已经是pandas DataFrame
的形式,那么将数据导出到Excel会非常简单。
import pandas as pd
# 创建一个DataFrame
data = {
'Name': ['Jack', 'Rose', 'Benjamin', 'Wyslin'],
'Age': [36, 33, 27, 46],
'City': ['New York', 'Washinton', 'Paris', 'London']
}
df = pd.DataFrame(data)
# 将DataFrame导出到Excel文件
df.to_excel("output.xlsx", index=False) # index=False表示不导出行索引
在这个例子中,我们首先创建了一个包含人名、年龄和城市的DataFrame。然后,我们使用to_excel
方法将其导出到名为output.xlsx
的Excel文件中,并通过设置index=False
来避免导出DataFrame的行索引。
pandas的to_excel
方法非常强大,它支持多种自定义选项,比如指定工作表名称、设置列宽、应用样式等。你可以查阅pandas的官方文档来了解更多高级功能。
三、实际使用示例
import requests
import json
from openpyxl import Workbook
def run():
export_adss_message_data()
#
# 导出设备数据
def export_adss_device_data2():
url = "https://127.0.0.1:50000/api/pis/device/page"
# 总公司 70
querystring = {"orgId": 70, "page": "1", "limit": "200"}
headers = {"authorization": "eyJhbGciOiJIUzUxMiJ9.eyJsb2d5MG.6IR81-cE8MPSbCBxhS_WBcg"}
response = requests.request("GET", url, headers=headers, params=querystring, verify=False)
# 创建一个工作簿
wb = Workbook()
# 激活工作表
ws = wb.active
# 更改工作表的标题
ws.title = "Example Sheet"
# 写入数据
ws.append(['*设备编号', '*设备名称', '*组织名称']) # 写入一行数据
# 将JSON字符串转换为Python字典
response_dict = json.loads(response.text)
index = 2
for item in response_dict['data']['list']:
ws['A' + str(index)] = item['deviceNum'] # 直接指定单元格写入数据
ws['B' + str(index)] = item['deviceName'] # 直接指定单元格写入数据
ws['C' + str(index)] = item['orgName'] # 直接指定单元格写入数据
index += 1
# 保存工作簿
wb.save("重新导出1.xlsx")
print("结束")
# 导出设备数据
def export_device_data():
url = "https://127.0.0.1:50000/api/pis/device/page"
# 分公司 41
querystring = {"orgId": 41, "page": "1", "limit": "200"}
headers = {"authorization": "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl9J9.n0fIyaT78_NNRNucC7eJgkS9D_7D0ZUeg"}
response = requests.request("GET", url, headers=headers, params=querystring, verify=False)
# 创建一个工作簿
wb = Workbook()
# 激活工作表
ws = wb.active
# 更改工作表的标题
ws.title = "Example Sheet"
# 写入数据
ws.append(['组织ID', '组织名称', '规则名称', '设备名称', '备注']) # 写入一行数据
# 将JSON字符串转换为Python字典
response_dict = json.loads(response.text)
index = 2
for item in response_dict['data']['list']:
ws['A' + str(index)] = item['orgId'] # 直接指定单元格写入数据
ws['B' + str(index)] = item['orgName'] # 直接指定单元格写入数据
ws['C' + str(index)] = item['ruleName'] # 直接指定单元格写入数据
ws['D' + str(index)] = item['deviceName'] # 直接指定单元格写入数据
ws['E' + str(index)] = item['remark'] # 直接指定单元格写入数据
index += 1
# 保存工作簿
wb.save("分公司.xlsx")
print("结束")
def export_adss_message_data():
url = "https://127.0.0.1:50000/api/pis/message/page"
# 只适合一个设备一个设备导出
strname = "910031200184"
set1 = {strname}
# 设置请求头,确保包含有效的授权令牌
headers = {"Authorization": "eyJhbGciOiJIUzUxMiJ9.eyJMiJ9.DQc0fErP_iqcEXtfmknzE-mnChvHVKby0kA"}
# 创建一个字典来存储每个 machineNum 对应的 dataByte 值
data_dict = {}
for machineNum in set1:
querystring = {"machineNum": machineNum, "page": "1", "limit": "10000", "createTimeStart": "2024-11-09+00:00:00", "createTimeEnd": "2024-11-12+23:59:59"}
response = requests.get(url, headers=headers, params=querystring, verify=False)
# 检查响应状态码
if response.status_code == 200:
# 创建一个工作簿
wb = Workbook()
# 激活工作表
ws = wb.active
# 更改工作表的标题
ws.title = "Example Sheet"
# 将JSON字符串转换为Python字典
response_dict = json.loads(response.text)
# 写入数据
ws.append(['采集时间', '原始字节']) # 写入一行数据
index = 2
for item in response_dict['data']['list']:
if item.get('dataByte') is not None:
ws.cell(row=index, column=1, value=item['messageTime']) # 通过行号和列号写入数据
ws.cell(row=index, column=2, value=item['dataByte']) # 通过行号和列号写入数据
index += 1
# 保存工作簿
wb.save("ass-" + machineNum + ".xlsx")
print("结束")
return data_dict
if __name__ == "__main__":
run()
好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!
标签:index,wb,item,Python,写入,excel,python,ws,response From: https://blog.csdn.net/weixin_44299027/article/details/143752598