python excel表格的导入和excel中插入折线图

import xlsxwriter
# 获取字符串长度,一个中文的长度为2

if __name__ == '__main__':
    # 创建工作簿并添加工作表。
    workbook = xlsxwriter.Workbook('Expenses01.xlsx')  # 设置输出路径为当前目录下
    worksheet = workbook.add_worksheet('sheet1')

    merge_format = workbook.add_format({
        'bold': True,  # 字体加粗
        'border': 1,  # 单元格边框宽度
        'align': 'center',  # 水平居中
        'valign': 'vcenter',  # 垂直居中
    })
    merge_format2 = workbook.add_format({
        'border': 1,  # 单元格边框宽度
        'align': 'center',  # 水平居中
        'valign': 'vcenter',  # 垂直居中
    })

    # 下面是我们想要写入工作表的一些数据。
    expenses = (
        ['时间', '自有', '自有', '自有', '曝光量', '曝光量', '曝光量', '曝光量', '点击量', '点击量', '点击量', '点击率', '点击率', '广点通-思擎收益维度',
         '广点通-思擎收益维度', '广点通-思擎收益维度', '分成后的收益维度', '分成后的收益维度', '分成后的收益维度', '支出', '收益', '下载', '安装', '2K曝光安装数', '安装单价',
         '安装转化率'],
        ['时间', '请求数', '请求成功', '填充率', '我的数据', '广点通-思擎数据', '曝光率', '曝光占比', '我的数据', '广点通-思擎数据', '点击占比', '我的数据', '广点通-思擎数据',
         '收入', 'ecpm', 'cpc', '收入', 'ecpm', 'cpc', '支出', '收益', '下载', '安装', '2K曝光安装数', '安装单价', '安装转化率'],
        ['2019-12-01', 428149, 383159, 89.49, 370665, 471006, 96.74, 127.07, 76487, 88610, 115.85, 20.64, 18.81, 11852,
         25.16, 0.13, 9481.6, 25.58, 0.12, 1667.9925, 7813.61, 0, 0, 0, 0, 0],
        ['2019-12-02', 389632, 351259, 90.15, 330347, 329097, 94.05, 99.62, 70559, 69023, 97.82, 21.36, 20.97, 10726.62,
         32.59, 0.16, 8581.296, 25.98, 0.12, 1486.5615, 7094.73, 0, 0, 0, 0, 0],
    )

    # 从第一个单元格开始。行和列为零索引。

    # 迭代数据并逐行写出。
    for row in range(len(expenses)):
        if row < 2:

            for col in range(len(expenses[row])):
                if expenses[row][col] == expenses[row - 1][col]:
                    '''
                    merge_range(first_row, first_col, last_row, last_col, data[, cell_format])  :合并elsx 表格数据 :第一行 ,第一列,最后一行,最后一列,数据
                    '''
                    worksheet.merge_range(row - 1, col, row, col, expenses[row][col], merge_format);
                elif expenses[row][col] == expenses[row][col - 1]:
                    worksheet.merge_range(row, col - 1, row, col, expenses[row][col], merge_format);
                else:
                    worksheet.write(row, col, expenses[row][col], merge_format)
        else:
            for col in range(len(expenses[row])):
                worksheet.write(row, col, expenses[row][col], merge_format2)
        worksheet.set_column(row, col, 15);

    chart_col = workbook.add_chart({'type': 'line'})  # 新建图表格式 line为折线图
    chart_col.add_series(  # 给图表设置格式,填充内容
        {
            'name': '=sheet1!$G$2',
            'categories': '=sheet1!$A$3:$A$12',
            'values': '=sheet1!$G$3:$G$12',
            'line': {'color': '#669CEE'},
        }
    )
    chart_col.set_title({'name': '曝光率'})

    chart_col.set_style(1)

    worksheet.insert_chart('A17', chart_col, {'x_offset': 32, 'y_offset': 17})  # 放置图表位置


    # 不要忘记关闭文件
    workbook.close()
@csrf_exempt
def resources_excel(request):
    from django.utils.http import urlquote
    if request.method == 'GET':
        pageSize = request.GET.get('pageSize')
        startIndex = request.GET.get('startIndex')
        pageSize = int(pageSize)
        startIndex = int(startIndex)
        astId = request.GET.get('astId')
        aitId = request.GET.get('aitId')
        actId = request.GET.get('actId')
        resourcesAll = resources_by_list({'startIndex': startIndex, 'pageSize': pageSize,
                                          'astId': astId, 'aitId': aitId, 'actId': actId})



        header = ['图片地址', '点击地址', '展示类型', '交互类型', '标题', '描述']
        data = resourcesAll['data'] #要写入的数据

        book = xlwt.Workbook(encoding='utf-8', style_compression=0)  # 创建一个Workbook对象,这就相当于创建了一个Excel文件
        # # 其中的test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False
        sheet = book.add_sheet('test', cell_overwrite_ok=True)

        # 设置表头
        i = 0
        for k in header:
            sheet.write(0, i, k)
            i = i + 1

        # 数据写入excel
        row = 1
        for val in data:
            sheet.write(row, 0, val['img_url'])  # 第二行开始
            sheet.write(row, 1, val['click_url'])  # 第二行开始
            sheet.write(row, 2, val['astName'])  # 第二行开始
            sheet.write(row, 3, val['aitName'])  # 第二行开始
            sheet.write(row, 4, val['title'])  # 第二行开始
            sheet.write(row, 5, val['description'])  # 第二行开始
            row = row + 1
        # 最后,将以上操作保存到指定的Excel文件中,只能本地用
        # time_stamp = datetime.datetime.now()
        # ticks2 = time_stamp.strftime('%Y-%m-%d-%H.%M.%S')
        # excel = "d:\excel"+ticks2+".xls"
        # book.save('test.xls')
        # book.save(excel)
        # return HttpResponse(content_type="application/json")
		
		# 写入浏览器
        # 写出到IO
        output = io.BytesIO()
        book.save(output)
        # 重新定位到开始
        output.seek(0)
        response = HttpResponse(output.getvalue(), content_type='application/vnd.ms-excel')
        ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        file_name = '素材池信息%s.xls' % ctime  # 给文件名中添加日期时间
        file_name = urlquote(file_name)  # 使用urlquote()方法解决中文无法使用的问题
        response['Content-Disposition'] = 'attachment; filename=%s' % file_name
        response.write(output.getvalue())	 # 在设置HttpResponse的类型时,如果给了值,可以不写这句
        return response
<a id="execl"><button type="button" id="export_btn" class="btn green bold" ><i class="glyphicon glyphicon-log-out"></i> excel导出</button></a>
		//get请求 直接<a> 标签
        function initExport(){
            $("#export_btn").click(function () {
                astId = $("#show_type").val();
                if (astId == null){
                    astId ="";
                }
                aitId = $("#interaction_type").val();
                if (aitId == null){
                    aitId ="";
                }
                actId = $("#creative_type").val();
                if (actId == null){
                    actId ="";
                }
                startIndex = (currentPage - 1) * pageSize;
                pageSize = pageSize;
                excelurl = "http://101.132.157.106:8880/resources/resources_excel?pageSize="+pageSize+"&startIndex="+startIndex+"&astId="+astId+"&aitId="+aitId+"&actId="+actId+"";
                $("#execl").attr("href",excelurl);
                window.location.href=excelurl;
            })
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值