做个记录

views

import xlwt
class ExAssetView(LoginRequiredMixin,View):
def get(self,request):
row = 1
style_heading = xlwt.easyxf("""
font:
name Arial,
colour_index white,
bold on,
height 0xA0;
align:
wrap off,
vert center,
horiz center;
pattern:
pattern solid,
fore-colour ocean_blue;
borders:
left THIN,
right THIN,
top THIN,
bottom THIN;
""")
style_body = xlwt.easyxf("""
font:
name Arial,
bold off,
height 0XA0;
align:
wrap on,
vert center,
horiz left;
borders:
left THIN,
right THIN,
top THIN,
bottom THIN;
""")
fmts = [
'M/D/YY',
'D-MMM-YY',
'D-MMM',
'MMM-YY',
'h:mm AM/PM',
'h:mm:ss AM/PM',
'h:mm',
'h:mm:ss',
'M/D/YY h:mm',
'mm:ss',
'[h]:mm:ss',
'mm:ss.0',
] style_green = xlwt.easyxf(" pattern: pattern solid,fore-colour 0x11;")
style_red = xlwt.easyxf(" pattern: pattern solid,fore-colour 0x0A;")
style_body.num_format_str = fmts[0]
ass_all = Asset.objects.all()
response = HttpResponse(content_type='application/vnd.ms-excel')#这里响应对象获得了一个特殊的mime类型,告诉浏览器这是个exell文件不是html
response['Content-Disposition'] = 'attachment; filename=asset'+time.strftime('%Y%m%d',time.localtime(time.time()))+'.xls'#这里响应对象获得了附加的Content-Disposition协议头,它含有excel文件的名称,文件名随意,当浏览器访问它时,会以"另存为"对话框中使用它
f = xlwt.Workbook() # 创建工作簿
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True) # 创建sheet
# sheet1.write(0, 1, label='内网ip', style_heading)
sheet1.write(0, 0, '主机名', style_heading)
sheet1.write(0, 1, '内网ip', style_heading)
sheet1.write(0, 2, '外网ip', style_heading)
sheet1.write(0, 3, '端口', style_heading)
sheet1.write(0, 4, '总内存', style_heading)
sheet1.write(0, 5, '总磁盘', style_heading)
sheet1.write(0, 6, 'CPU型号', style_heading)
sheet1.write(0, 7, 'CPU核数', style_heading)
sheet1.write(0, 8, '系统版本', style_heading)
sheet1.write(0, 9, '系统发行版本', style_heading)
sheet1.write(0, 10, 'DNS', style_heading)
sheet1.write(0, 11, 'MAC地址', style_heading)
sheet1.write(0, 12, '内核版本', style_heading)
sheet1.write(0, 13, '序列号', style_heading)
sheet1.write(0, 14, '虚拟化', style_heading)
sheet1.write(0, 15, '状态', style_heading)
sheet1.write(0, 16, '系统用户', style_heading)
sheet1.write(0, 17, '产品线', style_heading)
sheet1.write(0, 18, '标签', style_heading)
sheet1.write(0, 19, '云平台', style_heading)
sheet1.write(0, 20, '创建用户', style_heading)
sheet1.write(0, 21, '备注', style_heading)
sheet1.write(0, 22, '创建时间', style_heading)
sheet1.write(0, 23, '更新时间', style_heading)
for ass in ass_all:
sheet1.write(row, 0, ass.hostname)
sheet1.write(row, 1, ass.inner_ip)
sheet1.write(row, 2, ass.pub_ip)
sheet1.write(row, 3, ass.port)
sheet1.write(row, 4, ass.mem_total)
sheet1.write(row, 5, ass.disk_total)
sheet1.write(row, 6, ass.cpu_model)
sheet1.write(row, 7, ass.num_cpus)
sheet1.write(row, 8, ass.osfinger)
sheet1.write(row, 9, ass.osrelease)
sheet1.write(row, 10, ass.dns)
sheet1.write(row, 11, ass.mac_addr)
sheet1.write(row, 12, ass.kernelrelease)
sheet1.write(row, 13, ass.serialnumber)
sheet1.write(row, 14, ass.virtual)
if ass.status == '正常': sheet1.write(row, 15, ass.status,style_green)
else:
sheet1.write(row, 15, ass.status, style_red) sheet1.write(row, 16, ass.system_user.name + '--' + ass.system_user.username)
sheet1.write(row, 17, ass.product.name)
for tags in ass.tag.all():
sheet1.write(row, 18, tags.name)
sheet1.write(row, 19, ass.cloud_platform.cloud)
sheet1.write(row, 20, ass.create_user)
sheet1.write(row, 21, ass.detail)
sheet1.write(row, 22, str(ass.create_time), style_body)
sheet1.write(row, 23, str(ass.update_time), style_body) row += 1
f.save(response)#写入表格
return response

urls


from .views import ExAssetView
# 资产导出
app_name = 'asset'
urlpatterns = [
url(r'ex_asset/$', ExAssetView.as_view(), name='ex_asset'),
]

前端模板

  <a class="btn btn-default btn_import" data-toggle="modal" data-target="#user_import_modal"
tabindex="0">
<span><a href="{% url 'asset:ex_asset' %}" class="btn btn-primary btn-sm" type="button">导出</a></span>
</a>

导出表格样式

django xlwt实现资产导出功能的更多相关文章

  1. 在django里用xlwt作EXCEL导出功能

    参考了以前kevin的代码,搞起来快呀,哈哈哈,,阿里亚多.... 代码的意思比较明白,不注释,几乎自解释... 就是定义EXCEL时,比较硬生生的,一步一步没有快捷的方法. 另外就是取时间出来时,如 ...

  2. Django Admin中增加导出Excel功能

    参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...

  3. Django Admin中增加导出CSV功能

    参考: https://books.agiliq.com/projects/django-admin-cookbook/en/latest/export.html 在使用Django Admin时, ...

  4. 用SpringMvc实现Excel导出功能

    以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: ...

  5. 【HOW】如何限制Reporting Services报表导出功能中格式选项

    Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...

  6. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  7. 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

    我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...

  8. C#导入、导出功能

    //导出功能 protected void btnExport(object sender, EventArgs e) { //用来打开下载窗口 string fileName = "中心联 ...

  9. [转载]ecshop 实现订单导出功能 指定订单导出 EXCEL 数据文件

    当下很多功能都觉得理所当然,但是实际作为2012年停更的ECSHOP来说,很多功能其实都是缺少的,好比今天的要说的功能 订单导出 这个功能对于现在的产品设计来说,应该属于一个比较常规的功能,但是ECS ...

随机推荐

  1. Mysql连接数太多ERROR 1040 (HY000): Too many connections

    数据库连接报错:ERROR 1040 (HY000): Too many connections   1.查看连接数 /usr/local/mysql/bin/mysqladmin -h host - ...

  2. [leetcode]53. Maximum Subarray最大子数组和

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...

  3. 20172306 2018-2019-2 《Java程序设计》第五周学习总结

    20172306 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 查找 查找中,我们对这些算法的实现就是对某个Comparable对象的数组进行查找 泛型声明 ...

  4. 分布式协议学习笔记(一) Raft 选举

    Raft官网 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓. 有了这些详细的资 ...

  5. PHP-预定义函数访问数据库

    (1)复习:自定义函数 (2)调用PHP预定义的函数——访问MySQL数据库 1.函数的基础概念   定义一个简单的函数: function  函数名( ){ #函数主体 }  调用/运行一次函数: ...

  6. 网站日志流量分析采集(LuaJIT系统环境部署-node03,相关jar包自己手动上传)

    注:/usr/local/src 是源码包路径,可以自己更改 服务器中安装依赖 yum -y install gcc perl pcre-devel openssl openssl-devel 上传 ...

  7. sleep() 和 wait() 区别

    sleep()不释放同步锁,wait()释放同步锁 sleep()的作用是让线程休眠指定的时间,时间到后自动恢复线程执行.运行的主动权是由线程决定的. wait()可以用notify()直接唤起,运行 ...

  8. centos7 安装搜狗输入法

    1.root权限,卸载 ibus : yum remove ibus 2.加入EPEL源   sudo yum install epel-release 3.添加mosquito-myrepo源 su ...

  9. 使用Shell脚本对Linux系统和进程资源进行监控

    ShellLinux脚本 摘要:Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.本文我们以Bash做为实例总结了使用Shell对系统和进 ...

  10. oracle表空间扩容方法

    1.使用navicat连接要扩容的数据库,进入其他-表空间 2.添加数据文件和设置配置项即可