php原生导出简单word表格(TP为例) (原)
后台:
# 菲律宾名单word导出
public function export_word(){
$tids = $_GET['tids'];
$userinfo=M("philippines_visa")->where(["philippines_id"=>$tids])->select();
foreach ($userinfo as $key => $value) {
$userinfo[$key]['birth'] = explode('-', $value['date_of_birth']); # 出生日期
$userinfo[$key]['birth_m'] = $this->get_month($userinfo[$key]['birth']['1']);#月份英文
$userinfo[$key]['lssue'] = explode('-', $value['lssue_date']); # 签发日期
$userinfo[$key]['lssue_m'] = $this->get_month($userinfo[$key]['lssue']['1']);#月份英文
$userinfo[$key]['expiration'] = explode('-', $value['expiration_date']); # 有效日期
$userinfo[$key]['expiration_m'] = $this->get_month($userinfo[$key]['expiration']['1']);#月份英文
}
$user_info = $userinfo;
$user_info = array_chunk($user_info, 20, true); # 拆分为20个元素一组的多维数组 (需求而已)
$this->assign('user_info',$user_info);
$filename = '名单';
ob_start(); //打开缓冲区
$this->display();
header("Cache-Control: public");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
if (strpos($_SERVER["HTTP_USER_AGENT"],'MSIE')) {
header('Content-Disposition: attachment; filename='.$filename.'.doc');
}else if (strpos($_SERVER["HTTP_USER_AGENT"],'Firefox')) {
Header('Content-Disposition: attachment; filename='.$filename.'.doc');
} else {
header('Content-Disposition: attachment; filename='.$filename.'.doc');
}
header("Pragma:no-cache");
header("Expires:0");
ob_end_flush();//输出全部内容到浏览器
}
前端页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>菲律宾签证</title>
<style>
@page{
margin: 30px;
}
.box{page-break-after:always;}
input{font-family: '宋体';}
table{
border-collapse: collapse; /*设置列、行间距*/
}
table td,table th{
text-align:center;
}
</style>
</head>
<body>
<!-- 名单模板三 -->
<foreach name="user_info" item="user_page" key="key">
<div class="box box7 page" style="border-bottom:none;">
<table>
<tr>
<th style="width:4%;border:1px solid #000"></th>
<th style="width:10%;border:1px solid #000">SURNAME</th>
<th style="width:12%;border:1px solid #000">GIVEN NAME</th>
<th style="width:5%;border:1px solid #000">SEX</th>
<th style="width:5%;border:1px solid #000">(Birth Month) MM</th>
<th style="width:5%;border:1px solid #000">(Birth Day) DD</th>
<th style="width:5%;border:1px solid #000">(Birth Year) YY</th>
<th style="width:12%;border:1px solid #000">Passport Number</th>
</tr>
<tbody class="">
<foreach name="user_page" item="vo" key="k">
<tr>
<td style="border:1px solid #000">{$k+1}</td>
<td style="border:1px solid #000">{$vo.english_name}</td>
<td style="border:1px solid #000">{$vo.english_name_s}</td>
<td style="border:1px solid #000"><eq name='vo.m_sex' value='男'>M<else />F</eq></td>
<td style="border:1px solid #000">{$vo['birth']['1']}</td>
<td style="border:1px solid #000">{$vo['birth']['2']}</td>
<td style="border:1px solid #000">{$vo['birth']['0']}</td>
<td style="border:1px solid #000">{$vo.m_visa_number}</td>
</tr>
</foreach>
</tbody>
</table>
</div>
</foreach>
</body>
</html>
呈现:

php原生导出简单word表格(TP为例) (原)的更多相关文章
- PowerDesiger 15逆向生成工程E-R图及导出word表格
应用环境:win8(64位)+oracle10g(32位)服务端+PowerDesigner15 需求:oracle数据库中的表结构是web工程框架hibernate 自动生成,现需要将数据库中已有的 ...
- Java导出带格式的Excel数据到Word表格
前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...
- mvc中html导出成word下载-简单粗暴方式
由于工作需求,需要把html简历页导出成word下载.网上搜索了很多解决方案,基本都是用一些插件,然后写法也很麻烦,需要创建模板什么的. 固定替换值 代码一大堆.但是对于我的需求来说 并没有什么用 ...
- PHP 导出简单文本内容(word txt等)
PHP导出word文件,简单拓展可导出其他文本类文件 /** * PHP 导出简单文本内容(word txt等) * @param $content mixed 导出内容 (文本string / ht ...
- 如何将mysql表结构导出成Excel格式的(并带备注)另附转为word表格的方法
方法一: 1.使用一个MySQL管理工具:SQLyog,点击菜单栏“数据库”下拉的最后一项: 导出的格式如下: 2.要想转成Excel格式的只需手动将该表复制到Excel中去. 方法二: 1.以下用的 ...
- poi导出word表格详解 超详细了
转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138 一.效果如下 二.js代码 function export_word( ...
- poi导出word表格跨行
DataCommon.java package com.ksource.pwlp.model.statistic; public class DataCommon { private Long id; ...
- java导出生成word(类似简历导出)
参考帖子: http://www.cnblogs.com/lcngu/p/5247179.html http://www.cnblogs.com/splvxh/archive/2013/03/15/2 ...
随机推荐
- Spring实战(二)Spring容器和bean的生命周期
引入问题: 在XML配置文件中配置bean后,这些文件又是如何被加载的?它们被加载到哪里去了? Spring容器——框架核心 1.什么是Spring容器?它的功能是什么? 在基于Spring的应用中, ...
- 选项卡TAB
一.基础信息 关键class名:nav 写法: (1)头部选中状态:class="active" (2)头部按钮进行切换:<a>加data-toggle="t ...
- includes()函数的用法
在ES5,Array已经提供了indexOf用来查找某个元素的位置,如果不存在就返回-1,但是这个函数在判断数组是否包含某个元素时有两个小不足,第一个是它会返回-1和元素的位置来表示是否包含,在定位方 ...
- poi的基本导入
一.获取列的值 private String getCell(Cell cell){ if(null == cell){ return ""; } try{ cell.setCel ...
- RPC、RMI、REST的区别
初入职场,接触了不少企业常用的技术,与学校实训使用的技术有很大差异,在这里记录一下RPC.RMI与REST的区别. 概念 RPC(Remote Procedure Call,远程过程调用) 一种通过从 ...
- python 利用pyttsx3文字转语音(转)
原文链接作者 # -*- coding: utf-8 -*- import pyttsx3 engine = pyttsx3.init() with open("all.txt", ...
- 测试clang-format的格式化效果
我自己写的业余框架已告一段落,主体功能已完成,剩下的就是优化.第一个要优化的,就是代码格式.我一直是用编辑器写代码的,从之前的UltraEdit到notepad++到sublime text,再到现在 ...
- 学习手写vue,理解原理
class Compiler{ constructor(el,vm){ // 判断el属性 是不是 一个元素, 如果不是就获取 this.el = this.isElementNode(el)?el: ...
- celery最佳体验
目录 目录 不使用数据库作为 Broker 不要过分关注任务结果 实现优先级任务 应用 Worker 并发池的动态扩展 应用任务预取数 保持任务的幂等性 应用任务超时限制 善用任务工作流 合理应用 a ...
- Django的请求生命周期与中间件中的5中方法
请求生命周期: 客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端 中间件: 在全局层明处理请求和响应的 form djang ...