如果您想了解织梦CMS自定义表单导出到excel教程和织梦导入excel批量更新文章的知识,那么本篇文章将是您的不二之选。我们将深入剖析织梦CMS自定义表单导出到excel教程的各个方面,并为您解答织
如果您想了解织梦CMS自定义表单导出到excel教程和织梦导入excel批量更新文章的知识,那么本篇文章将是您的不二之选。我们将深入剖析织梦CMS自定义表单导出到excel教程的各个方面,并为您解答织梦导入excel批量更新文章的疑在这篇文章中,我们将为您介绍织梦CMS自定义表单导出到excel教程的相关知识,同时也会详细的解释织梦导入excel批量更新文章的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 织梦CMS自定义表单导出到excel教程(织梦导入excel批量更新文章)
- C#开发教程之利用特性自定义数据导出到Excel
- dedecms织梦怎么自定义表单导出到excel
- DedeCMS织梦自定义表单导出Excel文档
- dedecms织梦自定义表单导出到excel
织梦CMS自定义表单导出到excel教程(织梦导入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的方法有很多。但用来用去感觉不够自动化。于是花了点时间,利用特性做了个比较通用的导出方法。只需要根据实体类,自动导出想要的数据
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
修改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('post', 'list', 'edit', 'check', 'delete'))
改成
array('post', 'list', 'edit', 'check', 'delete', 'excel'))
继续找到
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>"; }
以上就是
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生成并导出Excel1.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
效果展示:
在它的下面加入一行
2、\dede\diy_list.PHP 找到
在它的上面加入
name}_".date("Y-m-d").".xls"); $fieldlist = $diy->getFieldList(); echo "
|
关于织梦CMS自定义表单导出到excel教程和织梦导入excel批量更新文章的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C#开发教程之利用特性自定义数据导出到Excel、dedecms织梦怎么自定义表单导出到excel、DedeCMS织梦自定义表单导出Excel文档、dedecms织梦自定义表单导出到excel的相关知识,请在本站寻找。
本文标签: