从网页导出excel

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

 

最近项目需要将网页上的数据导出为 excel ,虽然处理方法简单,但是我这做了些不同情况的测试,以及我使用的是 PHP ,并非 JSP 。原理是一样的,将头部设置成 excel 对应的格式。所以我还是认为应该做个总结记录下。希望其他同行遇到同样的需求的时候我这篇文章能起到一点点微弱的正面作用。

 

php

<? php

    header ( "Content-Type:application/vnd.ms-execl" );

header ( "Content-Disposition:filename=test.xls" );

?>

对应的 JSP

<%

response.setHeader("Content-disposition","inline; filename=test1.xls");

 %>


其中,inline 线上浏览方式,对应 attachment 下载保存。当然不写,他也会询问你的。

我的较完整的 php 测试代码 1

<? php

    header ( "Content-Type:application/vnd.ms-execl" );

    header ( "Content-Disposition:filename=test.xls" );

    echo "test1\t";

    echo "test1\t";

    echo "test1\t";

    echo "test1\t";

    echo "test1\n";

    echo "test2\t";

    echo "test2\t";

    echo "test2\t";

    echo "test2\t";

    echo "test2\n";

?>

测试打开网页后,提示保存或者打开 excel 文件。结果也显示是正确的。代码中关于 \t’, 其实你取数据轮到下一列就用‘ \t ’,而遇到下一行就用‘ \n ’。简单吧。而我随后进行了 table 的原始测试,也就是页面本来就有表格的那种。比如:

php 测试代码 2

<? php

    header ( "Content-Type:application/vnd.ms-execl" );

    header ( "Content-Disposition:filename=test.xls" );

?>

< table cellpadding =" 1 " cellspacing =" 1 " border =" 1 " >

    < tr >

    < td width =" 30 " > test1 </ td >

    < td width =" 60 " > test1 </ td >

    < td width =" 30 " > test1 </ td >

    < td width =" 100 " > test1 </ td >

    < td width =" 80 " > test1 </ td >

    </ tr >

   

    < tr >

    < td > test2 </ td >

    < td > test1 </ td >

    < td > test1 </ td >

    < td > test1 </ td >

    < td > test1 </ td >

    </ tr >

</ table >

 

测试结果顺利导出页面 tableexcel

说明:

1.    代码指定的宽度是起了作用。如果不制定,当然就自由伸缩,以放得下为标准。

2.       刚开始表格 cellpadding =" 1 " cellspacing =" 1 " border =" 1 " 这些属性我都没有设置,导的 excel 是没有单元格边框的。

3. 还有千万别在 HTML 里搞那 7788 的头声明(因为这里指定了,别冲突了哦)。小心出错。 o(_)o…
4. 当我们要导出word时候呢?
你肯定已经知道方法了。对的,我们只需要把contentType改成"application/msword"以及filename的副档名改成.doc就可以了。这个我没有测试。

在Django中,你可以使用xlwings库配合其他技术来实现在网页上动态导出Excel文件。首先,你需要安装必要的库,包括`django`, `xlwt`(用于创建Excel文件的基础库),以及`xlwings`(方便地与Python进行交互,处理Excel操作)。以下是一个基本步骤: 1. **设置环境**: - 在项目的settings.py中添加`xlwt`和`xlwings`到你的INSTALLED_APPS列表中。 2. **视图函数**: 创建一个视图函数,例如views.py中: ```python from django.http import HttpResponse import xlwings as xw def export_to_excel(request): # 获取需要的数据 data = get_your_data_from_database(request) # 使用xlwings创建一个新的工作簿 book = xw.Book() sheet = book.sheets[0] # 或者创建新的sheet # 写入数据 for row in data: sheet.append(row) # 将工作簿转换为响应并设置Content-Type response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename="export.xlsx"' # 保存并关闭工作簿,然后将内容写入响应 book.saveas('memory:///') # 使用内存地址作为保存路径 response.write(book.content) # 获取工作簿内容并写入HTTP响应 book.close() return response ``` 3. **URL配置**: 在urls.py中添加URL映射到这个视图函数: ```python path('export/', views.export_to_excel, name='export'), ``` 4. **模板中链接下载****:** 在HTML模板中,可以提供一个链接让用户点击导出,比如`<a href="{% url 'export' %}">导出Excel</a>`。 5. **安全性注意**: 考虑对敏感数据进行适当过滤,确保用户只能访问他们有权限的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值