用php的Smarty模板的后台程序,如何做文件导出(导成excel文件)???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用php的Smarty模板的后台程序,如何做文件导出(导成excel文件)???相关的知识,希望对你有一定的参考价值。

邮箱jshiport@126.com

smarty最后生成的也是html,所以以下是用js导出HTML表格到EXCEL的示例代码:

<HTML>
<HEAD>
<TITLE>将页面中指定表格的数据导入到Excel中</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function AutoExcel()
var oXL =new ActiveXObject("Excel.Application"); //创建应该对象
var oWB = oXL.Workbooks.Add();//新建一个Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要写入内容的工作表为活动工作表
var table = document.getElementById("data");//指定要写入的数据源的id
var hang = table.rows.length;//取数据源行数
var lie = table.rows(0).cells.length;//取数据源列数

// Add table headers going cell by cell.
for (i=0;i<hang;i++)//在Excel中写行
for (j=0;j<lie;j++)//在Excel中写列
//定义格式
oSheet.Cells(i+1,j+1).NumberFormatLocal ="@";//将单元格的格式定义为文本
//oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗
oSheet.Cells(i+1,j+1).Font.Size =10;//字体大小
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写入值


oXL.Visible =true;
oXL.UserControl =true;
oXL=null

//-->
</SCRIPT>
</HEAD>

<BODY>

<table border="0" id="data" bgcolor="black" cellspacing="1">
<tr bgcolor="white">
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<tr bgcolor="white">
<td>0001</td>
<td>张三</td>
<td>22</td>
<td>女</td>
</tr>
<tr bgcolor="white">
<td>0002</td>
<td>李四</td>
<td>23</td>
<td>男</td>
</tr>
</table>
<input type="button" name="out_excel" onclick="AutoExcel();" value="导出到excel">
</BODY>
</HTML>
参考技术A 导成excel文件是php的事,和Smarty是没关系的! 你可以找一下这样的php类!

如何自动加载 smarty 插件

【中文标题】如何自动加载 smarty 插件【英文标题】:How to auto load a smarty plugin 【发布时间】:2017-01-01 09:54:30 【问题描述】:

我们有一个带有 Smarty 模板引擎的 PHP 脚本插件,

它可以在带有 plugin_name 的模板文件中使用,但这需要确保它在每个模板文件上,问题是:

有没有办法在脚本加载时自动加载这个插件?

脚本不是开源的,但 Smarty 及其文件(如 Smarty.class.php 等)没有加密。

编辑

我需要做的就是在加载模板文件之前自动加载一个 Smarty 插件(它与数据库的交互很小),这是否可能/仅通过 Smarty 文件实现? (脚本本身是加密的,但Smarty_Compiler.class.php、Smarty.class.php、Config_File.class.php等smarty核心函数都是开源的)

【问题讨论】:

你能说得更具体点吗?这个插件有什么作用? @Borgtex 任何函数,甚至 function test()//Some Action with database ,都可以在像 test 这样的模板中使用,问题是如何在 smarty 加载模板文件之前自动加载它(所以它在模板之前运行显示)。我已经可以通过将 test 放在每个模板文件的顶部来做到这一点。 如果插件在模板显示之前运行并且没有修改它,为什么不在调用模板之前执行你的php文件中的函数呢? @Borgtex 这是一个聪明的插件,PHP脚本代码是加密的 但它的作用是什么?向模板添加内容?,即当您将

plugin_name

放入模板时,输出为

This is the output

?
【参考方案1】:

这取决于您使用的 Smarty 版本。

使用 Smarty 3,您可以:

$smarty = new Smarty();
$smarty->setTemplatesDir(....);
$smarty->addPluginsDir('/path/to/your/plugins');
... stuff.
$smarty->display('template.tpl');

另请参阅:https://www.smarty.net/docs/en/api.add.plugins.dir.tpl

对于 Smarty2,我认为您需要做更多类似的事情 -

https://www.smarty.net/docsv2/en/api.register.function.tpl

或者,您将函数放入 libs/plugins 目录,并使用正确的文件名和函数名...

【讨论】:

以上是关于用php的Smarty模板的后台程序,如何做文件导出(导成excel文件)???的主要内容,如果未能解决你的问题,请参考以下文章

php smarty前后台模板路径的配置问题

php常见面试(Smarty及相关知识)

利用smarty模板(登录有关信息操作等功能)

如何自动加载 smarty 插件

php用smarty来做简易留言系统,明细步骤简单操作

PHP - Smarty 模板 - 如何创建与上下文无关的模板