- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章thinkPHP+phpexcel实现excel报表输出功能示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了thinkphp+phpexcel实现excel报表输出功能。分享给大家供大家参考,具体如下:
准备工作:
1.下载phpexcel1.7.6类包; 。
2.解压至tp框架的thinkphp\vendor目录下,改类包文件夹名为phpexcel176,目录结构如下图; 。
编写代码(以一个订单汇总数据为例):
1. 创建数据库及表; 2. 创建tp项目,配置项目的数据库连接,这些基本的就不说了; 3. 在项目的lib\action下创建一个新的类文件exportstatisticsaction.class.php,然后在 index方法中实现excel导出; 4. 导出方法的步骤: ①查询数据 ②导入phpexcel类库 ③创建excel对象并设置excel对象的属性 ④设置excel的行列样式(字体、高宽、颜色、边框、合并等) ⑤绘制报表表头 ⑥将查询数据写入excel ⑦设置excel的sheet的名称 ⑧设置excel报表打开后初始的sheet ⑨设置输出的excel的头参数及文件名 ⑩调用创建excel的方法生成excel文件 。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<?php
/**
* created by lonm.shi.
* date: 2012-02-09
* time: 下午4:54
* to change this template use file | settings | file templates.
*/
class
exportstatisticsaction
extends
action {
public
function
index(){
$model
= d(
"ordersview"
);
$ordersdata
=
$model
->select();
//查询数据得到$ordersdata二维数组
vendor(
"phpexcel176.phpexcel"
);
// create new phpexcel object
$objphpexcel
=
new
phpexcel();
// set properties
$objphpexcel
->getproperties()->setcreator(
"ctos"
)
->setlastmodifiedby(
"ctos"
)
->settitle(
"office 2007 xlsx test document"
)
->setsubject(
"office 2007 xlsx test document"
)
->setdescription(
"test document for office 2007 xlsx, generated using php classes."
)
->setkeywords(
"office 2007 openxml php"
)
->setcategory(
"test result file"
);
//set width
$objphpexcel
->getactivesheet()->getcolumndimension(
'a'
)->setwidth(8);
$objphpexcel
->getactivesheet()->getcolumndimension(
'b'
)->setwidth(10);
$objphpexcel
->getactivesheet()->getcolumndimension(
'c'
)->setwidth(25);
$objphpexcel
->getactivesheet()->getcolumndimension(
'd'
)->setwidth(12);
$objphpexcel
->getactivesheet()->getcolumndimension(
'e'
)->setwidth(50);
$objphpexcel
->getactivesheet()->getcolumndimension(
'f'
)->setwidth(10);
$objphpexcel
->getactivesheet()->getcolumndimension(
'g'
)->setwidth(12);
$objphpexcel
->getactivesheet()->getcolumndimension(
'h'
)->setwidth(12);
$objphpexcel
->getactivesheet()->getcolumndimension(
'i'
)->setwidth(12);
$objphpexcel
->getactivesheet()->getcolumndimension(
'j'
)->setwidth(30);
//设置行高度
$objphpexcel
->getactivesheet()->getrowdimension(
'1'
)->setrowheight(22);
$objphpexcel
->getactivesheet()->getrowdimension(
'2'
)->setrowheight(20);
//set font size bold
$objphpexcel
->getactivesheet()->getdefaultstyle()->getfont()->setsize(10);
$objphpexcel
->getactivesheet()->getstyle(
'a2:j2'
)->getfont()->setbold(true);
$objphpexcel
->getactivesheet()->getstyle(
'a2:j2'
)->getalignment()->setvertical(phpexcel_style_alignment::vertical_center);
$objphpexcel
->getactivesheet()->getstyle(
'a2:j2'
)->getborders()->getallborders()->setborderstyle(phpexcel_style_border::border_thin);
//设置水平居中
$objphpexcel
->getactivesheet()->getstyle(
'a1'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_left);
$objphpexcel
->getactivesheet()->getstyle(
'a'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'b'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'd'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'f'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'g'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'h'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
$objphpexcel
->getactivesheet()->getstyle(
'i'
)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);
//合并cell
$objphpexcel
->getactivesheet()->mergecells(
'a1:j1'
);
// set table header content
$objphpexcel
->setactivesheetindex(0)
->setcellvalue(
'a1'
,
'订单数据汇总 时间:'
.
date
(
'y-m-d h:i:s'
))
->setcellvalue(
'a2'
,
'订单id'
)
->setcellvalue(
'b2'
,
'下单人'
)
->setcellvalue(
'c2'
,
'客户名称'
)
->setcellvalue(
'd2'
,
'下单时间'
)
->setcellvalue(
'e2'
,
'需求机型'
)
->setcellvalue(
'f2'
,
'需求数量'
)
->setcellvalue(
'g2'
,
'需求交期'
)
->setcellvalue(
'h2'
,
'确认bom料号'
)
->setcellvalue(
'i2'
,
'pmc确认交期'
)
->setcellvalue(
'j2'
,
'pmc交货备注'
);
// miscellaneous glyphs, utf-8
for
(
$i
=0;
$i
<
count
(
$ordersdata
)-1;
$i
++){
$objphpexcel
->getactivesheet(0)->setcellvalue(
'a'
.(
$i
+3),
$ordersdata
[
$i
][
'id'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'b'
.(
$i
+3),
$ordersdata
[
$i
][
'realname'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'c'
.(
$i
+3),
$ordersdata
[
$i
][
'customer_name'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'd'
.(
$i
+3), todate(
$ordersdata
[
$i
][
'create_time'
]));
//这里调用了common.php的时间戳转换函数
$objphpexcel
->getactivesheet(0)->setcellvalue(
'e'
.(
$i
+3),
$ordersdata
[
$i
][
'require_product'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'f'
.(
$i
+3),
$ordersdata
[
$i
][
'require_count'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'g'
.(
$i
+3),
$ordersdata
[
$i
][
'require_time'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'h'
.(
$i
+3),
$ordersdata
[
$i
][
'product_bom_encoding'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'i'
.(
$i
+3),
$ordersdata
[
$i
][
'delivery_time'
]);
$objphpexcel
->getactivesheet(0)->setcellvalue(
'j'
.(
$i
+3),
$ordersdata
[
$i
][
'delivery_memo'
]);
$objphpexcel
->getactivesheet()->getstyle(
'a'
.(
$i
+3).
':j'
.(
$i
+3))->getalignment()->setvertical(phpexcel_style_alignment::vertical_center);
$objphpexcel
->getactivesheet()->getstyle(
'a'
.(
$i
+3).
':j'
.(
$i
+3))->getborders()->getallborders()->setborderstyle(phpexcel_style_border::border_thin);
$objphpexcel
->getactivesheet()->getrowdimension(
$i
+3)->setrowheight(16);
}
// sheet命名
$objphpexcel
->getactivesheet()->settitle(
'订单汇总表'
);
// set active sheet index to the first sheet, so excel opens this as the first sheet
$objphpexcel
->setactivesheetindex(0);
// excel头参数
header(
'content-type: application/vnd.ms-excel'
);
header(
'content-disposition: attachment;filename="订单汇总表('
.
date
(
'ymd-his'
).
').xls"'
);
//日期为文件名后缀
header(
'cache-control: max-age=0'
);
$objwriter
= phpexcel_iofactory::createwriter(
$objphpexcel
,
'excel5'
);
//excel5为xls格式,excel2007为xlsx格式
$objwriter
->save(
'php://output'
);
}
}
|
5.调用导出方法直接 http://项目/index.php/exportstatistics/index,项目中调用直接__app__/exportstatistics/index,生成的报表是下载方式来保存。phpexcel1.7.6没有发现什么编码问题,速度也很快,注意导出的方法中不能有任何页面输出信息或调试信息,否则导出的excel会提示格式不对。效果如下:
导出报表 。
希望本文所述对大家基于thinkphp框架的php程序设计有所帮助.
最后此篇关于thinkPHP+phpexcel实现excel报表输出功能示例的文章就讲到这里了,如果你想了解更多关于thinkPHP+phpexcel实现excel报表输出功能示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
是否可以创建一个 sql 语句来动态生成 3 行而无需任何表..这些将包括 value1 : 10 | value2: 10 value2 : 11 | value2: 11 value3 : 12
近日,葡萄城正式发布了SpreadJS最新版本 V17.1,为前端表格控件市场带来了一系列令人瞩目的新特性和功能增强。本次更新旨在进一步提升用户在计算引擎、报表生成和分析等方面的体验,为各行业的开发者
我正在使用 Visual Studio 的 Crystal 报告,我创建了一个需要有背景图像的报告。我找不到像 Microsoft Report Viewer Report 这样的背景图像的方法。有办
我正在开发一个使用 Crystal Reports 生成 pdf、excel 和 word 报告文件的大型 C# 项目。 项目位于 SVN 存储库下,我们有主干和一个单独的分支。 我们每周都会将主干合
我以正确的格式放置了我的 super 语句,但我唯一的错误是它指出类 java.lang.object 中的构造函数对象不能应用于这部分代码的给定类型: super (openFile
我正在使用 Visual Studio 2008 并希望在报告中显示以下 SQL 查询: select name, count(*) from mytable group by name; 我可以通过
我使用 C# 在我的 CR 上正确地导入了一个图像。现在我需要在同一页面上显示包含 4 种不同产品的报告,类似这样: | P1 | P2 | | P3 | P4 | 为此,我创建了一个报告并将选项 R
我正在使用 C#.net 2010,我想使用两个表创建发票。一个表 Order 包含客户订购的东西,如类别、数量、费率、总金额,另一个表 Details 包含最终支付金额的详细信息,如 Vat、Fin
我正在使用 C# 创建一个 Crystal Report,我必须在 320 个不同的参数中复制一个简单的公式,但始终具有相同的条件,如下所示: if ({Precios.AhorroE1}[1] =
我在 vs2010 中创建了一个项目,然后创建了一个已部署的安装项目。当我在我的 PC 上运行应用程序时,它显然运行良好,但对于客户端计算机,应用程序运行良好,除了 crystal报道。我制作了安装项
我正在使用 Visual Studio、.NET 创建一个使用 Crystal 报表的 Web 应用程序,除了手动拖放之外,有什么方法可以让我以有组织的方式格式化这些报表? 谢谢 最佳答案 是的,报告
我正在使用 Visual Studio 2010 创建一个使用 Crystal Reports 的 Web 应用程序。 我目前使用 odp.NET 连接到 oracle 数据库并且一切正常,当我通过
我在 Windows 窗体应用程序 C# 中有 mysql 数据库,我想使用 Crystal 报告进行报告,但我想在没有报告向导的情况下连接到数据库,因为我希望我的应用程序独立于数据库服务器地址,并且
我正在开发一个超过 200 个表的大项目,我使用 MySQL(Percona)、Java 和 Crystal Report JRC。我有一些报告非常大并且多个表之间有很多连接。在Java客户端中,我通
我有一份报告和一份带有法语国际化资源包的子报告。没有抛出任何错误或警告,但是当我使用此报告创建 pdf 时,出现奇怪的字符,因为编码错误(É 代表 é 是一个例子)。 我仍在调查那个问题,但我猜它与子
我在让 Crystal Reports 与我们的应用程序很好地协同工作时遇到了一些问题。而且我似乎找不到任何资源来回答我的问题。 基本上,我们有一个 Crystal 报表,在 Crystal 报表应用
我正在为 Winform 使用 VS 2008。我在元素中有 Crystal 报表,我想在 CSS 的帮助下对其进行格式化。 谁能给我指出正确的教程来开始这个? 最佳答案 Visual Studio
我是java和crysal报告的新手。两天以来,我尝试使用 java 和 jsf 创建 Crystal 报告 pdf。一切正常,但是当我在代码中包含参数传递时,出现错误 *HTTP Status 5
我是这个工具的新手,所以我不知道如何获取类的数据并显示在报告中。 我没有数据库,我的信息存储在类内的变量中。像这样(文件夹 Objetos): 我的程序执行以下操作:读取 XML、使用 XSD 验证、
我需要在只有一个独立数据集(未连接到任何类型的数据库)的应用程序中使用 Crystal Reports 生成报告。此外,我需要根据 DataTable 中的值生成报告。 你能帮我看看吗,我是新手。我有
我是一名优秀的程序员,十分优秀!