zoukankan      html  css  js  c++  java
  • dajngo 表格数据导出

    正常数据量导出

    name = ["梧桐街道", "凤鸣街道", "河山镇", "崇福镇", "洲泉镇"]
                    for i in name:
                        station_qs = air_models.GreanKprMonitorDataDeviceDay.objects.filter(year=y,
                                                                                            street_name=i,
                                                                                            number=sum)
                        # 2.站点序列化
                        station_ser = serializers.Daily_Export_DataModelSerializer(station_qs, many=True).data
                        for i in station_ser:
                            data_list.append((i.get("gmt_create"),
                                              ("日报"),
                                              i.get("station_name"),
                                              i.get("street_name"),
                                              i.get("pollutions"),
                                              i.get("quality"),
                                              i.get("aqi"),
                                              i.get("pm2_5"),
                                              i.get("pm10"),
                                              i.get("no2"),
                                              i.get("o3"),
                                              i.get("so2"),
                                              i.get("co")))
                    columns = (
                        "时间", "类型", "站点名称", "街道名称", "首要污染物", "质量指数", "AQI", "PM2.5(μg/m³)", "PM10(μg/m³)", "SO2(μg/m³)",
                        "NO2(μg/m³)",
                        "O3(μg/m³)", "CO(mg/m³)")
                    workbook = xlwt.Workbook(encoding='utf-8')
                    # 添加一个表 参数为表名
                    sheet = workbook.add_sheet('demo')
                    for col, column in enumerate(columns):
                        sheet.write(0, col, column)
                    for i, item in enumerate(data_list):
                        for j, columns in enumerate(item):
                            sheet.write(i + 1, j, columns)
                    excel_name = "全部街道日报" + date_str.replace("-", "") + ".xls"
                    sio = io.BytesIO()
                    workbook.save(sio)
                    sio.seek(0)
                    response = HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel')  # 告诉浏览器是一xls
                    response['Content-Type'] = 'application/octet-stream'
                    response['Access-Control-Expose-Headers'] = "Content-Disposition, Content-Type"
                    response['Content-Disposition'] = 'attachment; filename={}'.format(
                        urlquote(excel_name))  # excel加头部    名称
                    response.write(sio.getvalue())
                    sio.close()
                    return response

    大数据导出

    sheets = []
                        wbk = xlwt.Workbook()
                        filename = date_str + "省控站站点.xls"
                        filename = urlquote(filename)
                        response = HttpResponse(content_type='application/vnd.ms-excel')
                        response['Content-Disposition'] = 'attachment; filename=%s' % (filename) + time.strftime('%Y%m%d',
                                                                                                                 time.localtime(
                                                                                                                     time.time())) + '.xls'
                        sheet = wbk.add_sheet("Log_0", cell_overwrite_ok=True)  # 创建工作页
                        row0 = ["时间", "类型", "地点名称", "AQI", "PM2.5(μg/m³)", "PM10(μg/m³)", "SO2(μg/m³)",
                                "NO2(μg/m³)",
                                "O3(μg/m³)", "CO(mg/m³)"]
                        sheets.append(sheet)
                        for i in range(0, len(row0)):
                            sheets[0].write(0, i, row0[i])
                        cursor = connections["default"].cursor()
                        sql1 = """SELECT pubtime ,a1.district,g.station,aqi,pm2_5,pm10,o3,no2,so2,co FROM txair_aircontrol as a1 RIGHT JOIN txair_stationcontrol as g ON g.station_code = a1.station_code
                                                                WHERE  DATE_FORMAT(pubtime,'%Y-%m-%d') BETWEEN '2021-01-01' and  '2021-12-31'"""
                        cursor.execute(sql1)
                        ret = cursor.fetchall()
                        # print(len(data))
                        num = 1  # 写入第几行
                        count = 1  # 写入第几条数据
    
                        if (len(ret)) < 0:
                            sheet.write(num, 0, "没有可以导出的日志信息")  # 工号
                        for d in ret:
                            scount = int(count / 65000)
                            if (len(sheets) <= scount):
                                sheets.append(wbk.add_sheet("Log_%s" % (scount + 1), cell_overwrite_ok=True))
                                for i in range(0, len(row0)):
                                    sheets[scount].write(0, i, row0[i])
                                    num = 1
                            sheet.write(num, 0, str(d[0]))  # 日志ID
                            sheet.write(num, 1, "省控站日报")  # 日志ID
                            sheet.write(num, 2, d[1])  # 操作内容
                            sheet.write(num, 3, d[2])  # 操作类型
                            sheet.write(num, 4, d[3])  # 操作人ID
                            sheet.write(num, 5, d[4])  # 操作人姓名
                            sheet.write(num, 6, d[5])  # 操作时间
                            sheet.write(num, 7, d[6])  # 操作时间
                            sheet.write(num, 8, d[7])  # 操作时间
                            sheet.write(num, 9, d[8])  # 操作时间
                            sheet.write(num, 10, d[9])  # 操作时间
                            num = num + 1
                            count = count + 1
                        wbk.save(response)
                        return response
  • 相关阅读:
    Python元组、列表、字典
    测试通过Word直接发布博文
    Python环境搭建(windows)
    hdu 4003 Find Metal Mineral 树形DP
    poj 1986 Distance Queries LCA
    poj 1470 Closest Common Ancestors LCA
    poj 1330 Nearest Common Ancestors LCA
    hdu 3046 Pleasant sheep and big big wolf 最小割
    poj 3281 Dining 最大流
    zoj 2760 How Many Shortest Path 最大流
  • 原文地址:https://www.cnblogs.com/zhenghuiwen/p/14688430.html
Copyright © 2011-2022 走看看