关于php上传excel工具类的信息

发布时间:2023-01-08

本文目录一览:

  1. php如何实现上传导入excel数据?
  2. 如何用php实现上传excel
  3. 怎么写一个php能实现上传excel并导入进mysql呢?还有怎么从mysql导出进一个新的exc
  4. [php 上传excel 表格 PHPExcel类,出现错](#php 上传excel 表格 PHPExcel类,出现错)

php如何实现上传导入excel数据?

难道你导入的时候不是选择的本地文件吗?input框获取之后提交过去就可以导入了啊。phpexcel中有例子的啊,可以看看简单的嘛。基本上按那个例子改点东西就可以用了啊。

如何用php实现上传excel

第一,在前台html页面进行上传文件:如:

<form method="post" action="php文件" enctype="multipart/form-data">
  <h3>导入Excel表:</h3>
  <input type="file" name="file_stu" />
  <input type="submit" value="导入" />
</form>

第二,在对应的php文件进行文件的处理:

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 = SITE_PATH . '/public/upfile/Excel/';
  /*以时间来命名上传的文件*/
  $str = date('Ymdhis');
  $file_name = $str . "." . $file_type;
  /*是否上传成功*/
  if (!copy($tmp_file, $savePath . $file_name)) {
    $this->error('上传失败');
  }
  /*
   * 对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
   * 注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
   */
  $res = Service('ExcelToArray')->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['uid'] = $v[0];
      $data['password'] = sha1('111111');
      $data['email'] = $v[1];
      $data['uname'] = $v[3];
      $data['institute'] = $v[4];
      $result = M('user')->add($data);
      if (!$result) {
        $this->error('导入数据库失败');
      }
    }
  }
}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的:

class ExcelToArrary extends Service {
  public function __construct() {
    /*导入phpExcel核心类 注意:你的路径跟我不一样就不能直接复制*/
    include_once('./Excel/PHPExcel.php');
  }
  /**
   * 读取excel $filename 路径文件名 $encode 返回数据的编码默认为utf8
   * 以下基本都不要修改
   */
  public function read($filename, $encode = 'utf-8') {
    $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;
  }
}

怎么写一个php能实现上传excel并导入进mysql呢?还有怎么从mysql导出进一个新的exc

可以使用excel插件,这个相对复杂。 说个非常简单的,一般excel文件可以保存成为csv文件,然后你就可以进行csv的文件处理。 csv的组成一般是:

col1,col2,col3
col12,col22,col33

可见,只要使用explode两次就可以得到一个二维数组:

array(
  array('col1', 'col2', 'col3'),
  array('col12', 'col22', 'col33')
)

然后批量导入这个二维数组就很简单了。 导出是一样的,写入一个,想办法把取出的数据构造成:

col1,col2,col3
col12,col22,col33

这样的字符串,然后使用header函数即可导出csv文件,csv可以使用excel直接打开。 纯手打,望采纳!

php 上传excel 表格 PHPExcel类,出现错

ZipArchive library is not enabled:出现这个错误说明是程序在调用ZipArchive这个类的时候没有成功,原因是由于在安装php的时候没有增加php zip的支持(非zlib)。 请在php.ini找到extension=php_zip.dll并把前面的分号去掉(如果没有,请添加extension=php_zip.dll此行并确保php_zip.dll文件存在相应的目录),保存后重启php即可。 在Unix/Linux下的解决办法:

  1. 在Linux下没有php_zip.dll这个文件(有也不会起作用的),所以需要重新编译一下php的zip模块。具体安装方法如下:
cd /usr/src
wget
tar -zxvf zip
cd zip-1.x.x
phpize
./configure
make
sudo make install

其中,在最后使用make install命令的时候,可能需要用到root的权限,所以建议使用sudo来运行。安装完之后,屏幕上会提示zip.so的位置。然后将其记录下来,如:/usr/local/lib/php/extensions/zip.so。 2. 使用root权限修改php.ini(通常可能会在/usr/local/lib/文件夹下,不过视当初安装php而定,可以通过phpinfo()来查看): 增加extension = /usr/local/lib/php/extensions/zip.so,然后同样在php.ini文件中,将zlib.output_compression = Off改为zlib.output_compression = On; 3. 最后别忘了重启一下Apache:

apachectl restart

这个针对php的zip模块就安装完成了,能够在php中使用ZipArchive类了。