<?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 ( '导入数据库失败' );
}
}
}
}
}
}
?>

最新文章

  1. ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
  2. 省市区三级联动 pickerView
  3. QString 和std::string互转
  4. windows核心编程---第八章 使用内核对象进行线程同步
  5. 关于计算机的ID和用户ID之间的关系
  6. 数迹学——Asp.Net MVC4入门指南(4):添加一个模型
  7. DFD数据流程图
  8. uva 10246(最短路变形)
  9. hdu4933 Miaomiao&#39;s Function
  10. Animator角色重复受击播放问题
  11. raido 赋值第一次成功,然后就赋值不显示
  12. VS集成Qt环境搭建
  13. 几款jQuery右键菜单插件
  14. Microsoft Visual C++ Runtime Library Runtime Error解决的方式
  15. ndk搭建与运行
  16. 《HelloGitHub月刊》第11期
  17. 深入tornado中的IOStream
  18. Linux学习笔记(二)——文件/目录/VIM
  19. Python 高阶函数map(),filter(),reduce()
  20. BN讲解(转载)

热门文章

  1. AtCoder Regular Contest 075 C D E (暂时)
  2. Understand:高效代码静态分析神器详解(一)【转】
  3. cisco packet 实验教程(二)
  4. PostMan的在线安装和简单使用
  5. 参数化2--CSV Data Set Config 参数化配置
  6. 利用Jdk 6260652 Bug解析Arrays.asList
  7. 说说GestureDetector.OnGestureListener onScroll函数
  8. VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)
  9. 负样本采样及bias校准、ctr平滑
  10. Swift 函数的定义与调用(Defining and Calling Functions)