TP 上传excel
2024-08-23 23:26:16
<?php
class ExcelAction extends Action{
public function read($filename,$encode='utf-8'){
vendor('Excel.PHPExcel');
$objReader = PHPExcel_IOFactory::createReader(Excel5);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData; }
public function excel(){
$this->display();
}
public function runexcel(){
if (! empty ( $_FILES ['file_stu'] ['name'] ))
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
/*判别是不是.xls文件,判别是不是excel文件*/
if (strtolower ( $file_type ) != "xls")
{
$this->error ( '不是Excel文件,重新上传' );
}
/*设置上传路径*/
$savePath = '/';
/*以时间来命名上传的文件*/
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type;
/*是否上传成功*/
if (! copy ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上传失败' );
}
/* *对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中 注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入 */
$res = $this->read ( $savePath . $file_name );
/* 重要代码 解决Thinkphp M、D方法不能调用的问题 如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码 */
spl_autoload_register ( array ('Think', 'autoload' ) ); /*对生成的数组进行数据库的写入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['khmc'] = $v[0];
$data ['lxdz'] = $v[6];
$data ['khdh'] = $v[4];
$result = M ( 'khgl' )->add ( $data );
if (! $result)
{
$this->error ( '导入数据库失败' );
}
}
}
}
}
}
?>
最新文章
- ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
- 省市区三级联动 pickerView
- QString 和std::string互转
- windows核心编程---第八章 使用内核对象进行线程同步
- 关于计算机的ID和用户ID之间的关系
- 数迹学——Asp.Net MVC4入门指南(4):添加一个模型
- DFD数据流程图
- uva 10246(最短路变形)
- hdu4933 Miaomiao&#39;s Function
- Animator角色重复受击播放问题
- raido 赋值第一次成功,然后就赋值不显示
- VS集成Qt环境搭建
- 几款jQuery右键菜单插件
- Microsoft Visual C++ Runtime Library Runtime Error解决的方式
- ndk搭建与运行
- 《HelloGitHub月刊》第11期
- 深入tornado中的IOStream
- Linux学习笔记(二)——文件/目录/VIM
- Python 高阶函数map(),filter(),reduce()
- BN讲解(转载)
热门文章
- AtCoder Regular Contest 075 C D E (暂时)
- Understand:高效代码静态分析神器详解(一)【转】
- cisco packet 实验教程(二)
- PostMan的在线安装和简单使用
- 参数化2--CSV Data Set Config 参数化配置
- 利用Jdk 6260652 Bug解析Arrays.asList
- 说说GestureDetector.OnGestureListener onScroll函数
- VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)
- 负样本采样及bias校准、ctr平滑
- Swift 函数的定义与调用(Defining and Calling Functions)