GVKun编程网logo

织梦CMS自定义表单导出到excel教程(织梦导入excel批量更新文章)

5

如果您想了解织梦CMS自定义表单导出到excel教程和织梦导入excel批量更新文章的知识,那么本篇文章将是您的不二之选。我们将深入剖析织梦CMS自定义表单导出到excel教程的各个方面,并为您解答织

如果您想了解织梦CMS自定义表单导出到excel教程织梦导入excel批量更新文章的知识,那么本篇文章将是您的不二之选。我们将深入剖析织梦CMS自定义表单导出到excel教程的各个方面,并为您解答织梦导入excel批量更新文章的疑在这篇文章中,我们将为您介绍织梦CMS自定义表单导出到excel教程的相关知识,同时也会详细的解释织梦导入excel批量更新文章的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

织梦CMS自定义表单导出到excel教程(织梦导入excel批量更新文章)

织梦CMS自定义表单导出到excel教程(织梦导入excel批量更新文章)

 

织梦CMS自定义表单导出到excel教程

不写死任何字段,不写死任何东西,修改2个文件,让织梦自定义表单自由导出到Excel表格里。

添加教程

1、\dede\templets\diy_main.htm 找到

前台预览</a>

在它的下面加入一行

| <a href=http://www.dede58.com/a/dedejq/"diy_list.php?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel</a>

2、\dede\diy_list.php 找到

else

{

showmsg('未定义操作', "-1");

}

在它的上面加入

else if($action == 'excel')

{

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");

$fieldlist = $diy->getFieldList();

echo "<table><tr>";

foreach($fieldlist as $field=>$fielddata)

{

echo "<th>{$fielddata[0]}</th>";

}

echo "<th>状态</th>";

echo "</tr>";

$sql = "SELECT * FROM {$diy->table} ORDER BY id DESC";

$dsql->SetQuery($sql);

$dsql->Execute('t');

while($arr = $dsql->GetArray('t'))

{

echo "<tr>";

foreach($fieldlist as $key => $field)

{

echo "<td>".$arr[$key]."</td>";

}

$status = $arr['ifcheck'] == 1 ? '已审核' : '未审核';

echo "<td>".$status."</td>";

echo "</tr>";

}

echo "</table>";

本文章网址:http://www.ppssdd.com/code/12347.html。转载请保留出处,谢谢合作!

C#开发教程之利用特性自定义数据导出到Excel

C#开发教程之利用特性自定义数据导出到Excel

网上C#导出Excel的方法有很多。但用来用去感觉不够自动化。于是花了点时间,利用特性做了个比较通用的导出方法。只需要根据实体类,自动导出想要的数据

1.在NuGet上安装Aspose.Cells或者用微软自带类库也可以

2.需要导出的数据的实例类:

using System.ComponentModel;
using System.Reflection;
using System.Runtime.Serialization;
public class OrderReport
{
[displayName("订单编号")]
public string orderNo { get; set; }
[IgnoreDataMember]
public DateTime orderTime { get; set; }
[displayName("订单时间")]
public String orderTime_fomart { get { return orderTime.ToShortDateString(); } }
[displayName("商品编码")]
public string itemCode { get; set; }
[displayName("商品名称")]
public string itemName { get; set; }
} 

定义实体中加上 [displayName("订单编号")]用来导出到Excel生成列名。不需在导出一一对应写列名。[IgnoreDataMember]属性是用来导出是忽略掉不用导出 。

关于特性的介绍详细请参考MSDN。

3.实现导出方法:

/// <summary>
/// 导出类
/// </summary>
public class ExportHandle
{
/// <summary>
/// 挂起订单报表导出
/// </summary>
public static void execExportOrderReport()
{
var orderReportList = new List<OrderReport>()
{
new OrderReport() { orderNo= "XD00001",orderTime=DateTime.Now,itemCode="G001",itemName="辣条"},new OrderReport() { orderNo= "XD00002",itemCode="G002",itemName="茶蛋"},new OrderReport() { orderNo= "XD00003",itemCode="G003",itemName="切糕"},new OrderReport() { orderNo= "XD00004",itemCode="G004",itemName="大虾"},new OrderReport() { orderNo= "XD00005",itemCode="G005",itemName="帝王蟹"}
};
string path = "OrderReport.xlsx";
Console.WriteLine("开始执行导出");
OutDataToExcel(orderReportList,"订单报表",path);
Console.WriteLine("导出完成:位置"+path);
}
/// <summary>
/// 导出方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">导出的数据list</param>
/// <param name="title">数据类容标题</param>
/// <param name="path">导出excel存放路径</param>
public static void OutDataToExcel<T>(List<T> list,string title,string path)
{
Workbook workbook = new Workbook(); //工作簿 
Worksheet sheet = workbook.Worksheets[0]; //工作表 
sheet.IsGridlinesVisible = false;//去掉初始单元线
Cells cells = sheet.Cells;//单元格 
//为标题设置样式 
Style styleTitle = workbook.CreateStyle();//新增样式 
styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
styleTitle.Font.Name = "微软雅黑";//文字字体 
styleTitle.Font.Size = 18;//文字大小 
styleTitle.Font.IsBold = true;//粗体 
//样式1 标题下方的日期
Style style1 = workbook.CreateStyle();//新增样式 
style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
style1.Font.Name = "微软雅黑";//文字字体 
style1.Font.Size = 12;//文字大小 
//样式2 列名
Style style2 = workbook.CreateStyle();//新增样式 
style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
style2.Font.Name = "微软雅黑";//文字字体 
style2.Font.Size = 12;//文字大小 
style2.Font.IsBold = true;//粗体 
style2.Borders[BorderType.LeftBorder].Linestyle = CellBorderType.Thin;
style2.Borders[BorderType.RightBorder].Linestyle = CellBorderType.Thin;
style2.Borders[BorderType.TopBorder].Linestyle = CellBorderType.Thin;
style2.Borders[BorderType.BottomBorder].Linestyle = CellBorderType.Thin;
//样式3 数据的样式
Style style3 = workbook.CreateStyle();//新增样式 
style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
style3.Font.Name = "微软雅黑";//文字字体 
style3.Font.Size = 10;//文字大小 
style3.Borders[BorderType.LeftBorder].Linestyle = CellBorderType.Thin;
style3.Borders[BorderType.RightBorder].Linestyle = CellBorderType.Thin;
style3.Borders[BorderType.TopBorder].Linestyle = CellBorderType.Thin;
style3.Borders[BorderType.BottomBorder].Linestyle = CellBorderType.Thin;
if (list.Count == 0) return;
var t = list.First().GetType();//获取列表的类的属性
//通过反射筛选忽略掉[IgnoreDataMemberAttribute]的字段
var properties = t.GetProperties().Where(x => x.GetCustomAttribute<IgnoreDataMemberAttribute>() == null);
int Colnum = properties.Count();//表格列数 
int Rownum = list.Count;//表格行数 
//生成行1 标题行 
cells.Merge(0,1,Colnum);//合并单元格 
cells[0,0].PutValue(title);//填写内容 
cells[0,0].SetStyle(styleTitle);
cells.SetRowHeight(0,38);//行高
//生成行2 日期 
cells.Merge(1,Colnum);//合并单元格 
cells[1,0].PutValue(DateTime.Now.ToShortDateString());//填写内容 
cells[1,0].SetStyle(style1);
cells.SetRowHeight(1,20);//行高
//列名及数据行
int i = 0;
foreach (var item in properties)
{
var itemType = t.GetProperty(item.Name);
var colName = itemType.GetCustomAttribute<displayNameAttribute>().displayName;//反射获取字段的displayName特性值
cells[2,i].PutValue(colName);
cells[2,i].SetStyle(style2);
cells.SetColumnWidth(i,colName.Length * 3);//设置列宽
int k = 0;
foreach (var rowdata in list)
{
//反射遍历添加数据
object value = rowdata.GetType().GetProperty(item.Name).GetValue(rowdata,null);
string ss = value == null ? "" : value.ToString();
cells[3 + k,i].PutValue(ss);
cells[3 + k,i].SetStyle(style3);
cells.SetRowHeight(3 + k,18);//设置行高
k++;
}
i++;
}
workbook.Save(path);//生成Excel
}
} 

导出方法 OutDataToExcel<T>(List<T> list,Enum en,string path)用了泛型参数,将任意的实体list自动导出。

var properties = t.GetProperties().Where(x => AttributeAccessor.GetAttribute<IgnoreDataMemberAttribute>(x) == null);

采用lamda表达式在传过来的实体属性中筛选出

不是IgnoreDataMemberAttribute的属性字段

foreach (var item in properties){}遍历实体类的属性相当于DataTable循环读取数据 
object value = rowdata.GetType().GetProperty(item.Name).GetValue(rowdata,null); 通过属性名称获取属性值。
通过以上两个步骤,实现自动
}

4.导出结果:

总结,通过特性来实现通用的导出。只需要设置相关的类的字段和特性值即可自定义导出

以上所述是小编给大家介绍的C#开发教程之利用特性自定义数据导出到Excel,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel

dedecms织梦怎么自定义表单导出到excel?

修改2个文件,让织梦自定义表单自由导出到Excel表格里。

推荐学习:织梦cms

修改教程如下:

1、\dede\templets\diy_main.htm 找到

前台预览

<a href="diy_list.php?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel</a>
登录后复制

2、\dede\diy_list.php 找到

array(&#39;post&#39;, &#39;list&#39;, &#39;edit&#39;, &#39;check&#39;, &#39;delete&#39;))
登录后复制

改成

array(&#39;post&#39;, &#39;list&#39;, &#39;edit&#39;, &#39;check&#39;, &#39;delete&#39;, &#39;excel&#39;))
登录后复制

继续找到

else
{
    showmsg(&#39;未定义操作&#39;, "-1");
}
登录后复制

在它的上面加入

else if($action == &#39;excel&#39;)
{
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");
$fieldlist = $diy->getFieldList();
echo "<table><tr>";
foreach($fieldlist as $field=>$fielddata)
{
echo "<th>{$fielddata[0]}</th>";
}
echo "<th>状态</th>";
echo "</tr>";
$sql = "SELECT * FROM {$diy->table} ORDER BY id DESC";
$dsql->SetQuery($sql);
$dsql->Execute(&#39;t&#39;);
while($arr = $dsql->GetArray(&#39;t&#39;))
{
echo "<tr>";
foreach($fieldlist as $key => $field)
{
echo "<td>".$arr[$key]."</td>";
}
$status = $arr[&#39;ifcheck&#39;] == 1 ? &#39;已审核&#39; : &#39;未审核&#39;;
echo "<td>".$status."</td>";
echo "</tr>";
}
echo "</table>";
}
登录后复制

以上就是dedecms织梦怎么自定义表单导出到excel的详细内容,更多请关注php中文网其它相关文章!

DedeCMS织梦自定义表单导出Excel文档

DedeCMS织梦自定义表单导出Excel文档

 

DedeCMS自定义表单功能一般,但也满足了大多数人的需求。需要查看表单需要登录后台,如果用户提交的订单并发送到email也不能全部统一导出,在月度或季度的时候,就比较麻烦。

前面做过一个关于学校报名网站的二开,需要用到这个功能,分享一个DedeCMS自定义表单导出功能的教程,比较简单,只需要修改两个文件,不需要download第三方SDK(PHPExcel)开发包,感兴趣的可以自己download,本帖后有说明。

DedeCMS表单生成Excel推荐办法

1、打开/dede/templets/diy_main.htm 找到

前台预览</a>  

后面增加

| <a href=http://www.dede58.com/a/dedejq/"diy_list.php?action=push&diyid={dede:field.diyid/}" target="_blank">导出Excel</a>  

2、打开/dede/diy_list.php 找到

array('post', 'list', 'edit', 'check', 'delete'))  

在 'delete' 后面增加 ,'push',如下

array('post', 'list', 'edit', 'check', 'delete','push'))  

在*下面找到

else { showmsg('未定义操作', "-1"); }  

在这段之前增加代码

else if($action == 'push') { header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");//表格命名方式 $fieldlist = $diy->getFieldList(); echo "<table><tr>"; foreach($fieldlist as $field=>$fielddata) { echo "<th>{$fielddata[0]}</th>"; } echo "<th>状态</th>"; echo "</tr>"; $sql = "SELECT * FROM {$diy->table} ORDER BY id DESC"; $dsql->SetQuery($sql); $dsql->Execute('t'); while($arr = $dsql->GetArray('t')) { echo "<tr>"; foreach($fieldlist as $key => $field) { echo "<td>".$arr[$key]."</td>"; } $status = $arr['ifcheck'] == 1 ? '已审核' : '未审核'; echo "<td>".$status."</td>"; echo "</tr>"; } echo "</table>"; }  

导出来的文件不带格式,可以根据自己的需要添加、修改。

DedeCMS第三方SDK生成并导出Excel

1.downloadPHPExcel的SDK,download地址:https://github.com/PHPOffice/PHPExcel。

2.将SDK解压之后的Class文件拷贝到自己的项目,如本例的放在根目录下。

打开/dede/templets/diy_main.htm 找到

前台预览</a>  

后面增加

| <a href=http://www.dede58.com/a/dedejq/"diy_list.php?action=push&diyid={dede:field.diyid/}" target="_blank">导出Excel</a>  

打开/dede/diy_list.php 增加如下代码。

else if($action == 'push') { ... }  

上面省略号(...)的内容如下,代码比较多,分别进行说明

/* * *Excel文件读取 * */ function excelToArray(){ require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php'; //项目路径 //加载excel文件 $filename = dirname(__FILE__).'/result.xlsx'; //根目录 $objPHPExcelReader = PHPExcel_IOFactory::load($filename); $sheet = $objPHPExcelReader->getSheet(0); // 读取*个工作表(编号从 0 开始) $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); // 一次读取一列 $res_arr = array(); for ($row = 2; $row <= $highestRow; $row++) { $row_arr = array(); for ($column = 0; $arr[$column] != 'F'; $column++) { $val = $sheet->getCellByColumnAndRow($column, $row)->getValue(); $row_arr[] = $val; } $res_arr[] = $row_arr; } return $res_arr; } /* * 创建(导出)Excel数据表格 * @param array $list 要导出的数组格式的数据 * @param string $filename 导出的Excel表格数据表的文件名 * @param array $indexKey $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值) * @param array $startRow *条数据在Excel表格中起始行 * @param [bool] $excel2007 是否生成Excel2007(.xlsx)以上兼容的数据表 * 比如: $indexKey与$list数组对应关系如下: * $indexKey = array('id','username','sex','age'); * $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24)); */ function exportExcel($list,$filename,$indexKey,$startRow=1,$excel2007=false){ //文件引入 require_once APP_ROOT.'/Classes/PHPExcel.php'; require_once APP_ROOT.'/Classes/PHPExcel/Writer/Excel2007.php'; if(empty($filename)) $filename = time(); if( !is_array($indexKey)) return false; $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //初始化PHPExcel() $objPHPExcel = new PHPExcel(); //设置保存版本格式 if($excel2007){ $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $filename = $filename.'.xlsx'; }else{ $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $filename = $filename.'.xls'; } //接下来就是写数据到表格里面去 $objActSheet = $objPHPExcel->getActiveSheet(); //$startRow = 1; foreach ($list as $row) { foreach ($indexKey as $key => $value){ //这里是设置单元格的内容 $objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]); } $startRow++; } // download这个表格,在浏览器输出 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename='.$filename.''); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); } /* * 导出文件,还可以设置源码 * */ function exportExcel($list,$filename,$indexKey=array()){ require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php'; require_once dirname(__FILE__) . '/Classes/PHPExcel.php'; require_once dirname(__FILE__) . '/Classes/PHPExcel/Writer/Excel2007.php'; $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //$objPHPExcel = new PHPExcel(); //初始化PHPExcel(),不使用源码 $template = dirname(__FILE__).'/template.xls'; //使用源码 $objPHPExcel = PHPExcel_IOFactory::load($template); //加载excel文件,设置源码 $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式 //接下来就是写数据到表格里面去 $objActSheet = $objPHPExcel->getActiveSheet(); $objActSheet->setCellValue('A2', "活动名称:江南极客"); $objActSheet->setCellValue('C2', "导出时间:".date('Y-m-d H:i:s')); $i = 4; foreach ($list as $row) { foreach ($indexKey as $key => $value){ //这里是设置单元格的内容 $objActSheet->setCellValue($header_arr[$key].$i,$row[$value]); } $i++; } // 1.保存至本地Excel表格 //$objWriter->save($filename.'.xls'); // 2.接下来当然是download这个表格了,在浏览器输出就好了 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename="'.$filename.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); }  
/* * 导出文件,还可以设置源码 * */ function exportExcel($list,$filename,$indexKey=array()){ require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php'; require_once dirname(__FILE__) . '/Classes/PHPExcel.php'; require_once dirname(__FILE__) . '/Classes/PHPExcel/Writer/Excel2007.php'; $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //$objPHPExcel = new PHPExcel(); //初始化PHPExcel(),不使用源码 $template = dirname(__FILE__).'/template.xls'; //使用源码 $objPHPExcel = PHPExcel_IOFactory::load($template); //加载excel文件,设置源码 $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式 //接下来就是写数据到表格里面去 $objActSheet = $objPHPExcel->getActiveSheet(); $objActSheet->setCellValue('A2', "活动名称:江南极客"); $objActSheet->setCellValue('C2', "导出时间:".date('Y-m-d H:i:s')); $i = 4; foreach ($list as $row) { foreach ($indexKey as $key => $value){ //这里是设置单元格的内容 $objActSheet->setCellValue($header_arr[$key].$i,$row[$value]); } $i++; } // 1.保存至本地Excel表格 //$objWriter->save($filename.'.xls'); // 2.接下来当然是download这个表格了,在浏览器输出就好了 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-下载"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/下载");; header('Content-Disposition:attachment;filename="'.$filename.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); }  
设置一个excel源码

使用该源码导出数据

除此之外还可以对表格属性做很多自定义。感兴趣的自己看看吧!

本文章网址:http://www.ppssdd.com/code/14841.html。转载请保留出处,谢谢合作!

dedecms织梦自定义表单导出到excel

dedecms织梦自定义表单导出到excel

效果展示:

dedecms织梦自定义表单导出到excel

不写死任何字段,不写死任何东西,修改2个文件,让织梦自定义表单自由导出到Excel表格里。 修改教程如下: 1、\dede\templets\diy_main.htm 找到

PHP">前台预览

在它的下面加入一行

PHP">| PHP?action=excel&diyid={dede:field.diyid/}" target="_blank">导出表单Excel

2、\dede\diy_list.PHP 找到

PHP">else { showmsg('未定义操作',"-1"); }

在它的上面加入

name}_".date("Y-m-d").".xls"); $fieldlist = $diy->getFieldList(); echo "$fielddata) { echo "{$fielddata[0]}"; } echo "状态"; echo "sql->SetQuery($sql); $dsql->Execute('t'); while($arr = $dsql->GetArray('t')) { echo " $field) { echo "

display:none;" id="__kindeditor_bookmark_end_34__">

关于织梦CMS自定义表单导出到excel教程织梦导入excel批量更新文章的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C#开发教程之利用特性自定义数据导出到Excel、dedecms织梦怎么自定义表单导出到excel、DedeCMS织梦自定义表单导出Excel文档、dedecms织梦自定义表单导出到excel的相关知识,请在本站寻找。

本文标签: