Heim > Artikel > Backend-Entwicklung > Verwenden Sie phpExcel, um Excel-Daten zu importieren und zu exportieren
Dieser Artikel stellt hauptsächlich die Verwendung von phpExcel zum Importieren und Exportieren von Excel-Daten vor. Jetzt kann ich ihn mit Ihnen teilen.
Meine Routine ist Wenn das Thinkphp-Entwicklungsframework dieselbe Methode in anderen Frameworks verwendet, können viele Benutzer den Import und Export von Excel möglicherweise nicht korrekt implementieren. Das Problem ist im Grunde ein Fehler im Referenzpfad der PHPExcel-Kernklasse Ist ein Problem, muss jeder es korrigieren.
In vielen Artikeln wird die Verwendung von phpExcel zum Importieren und Exportieren von Excel-Daten erwähnt Einige Probleme sind meine Recherchen zu phpExcel. Die Verwendungsroutinen fassen die Verwendungsmethoden zusammen und gehen dann direkt zum Thema über.
Zuallererst möchte ich sagen, dass diese Routine von mir im Entwicklungsframework von Thinkphp verwendet wird. Wenn sie in anderen Frameworks verwendet wird, können viele Leute sie möglicherweise nicht korrekt implementieren Beim Import und Export von Excel handelt es sich grundsätzlich um Fehler im Referenzpfad der Kernklasse von PHPExcel. Wenn ein Problem vorliegt, müssen Sie testen, ob Lu Jin korrekt referenziert ist.
(1) Excel importieren
Laden Sie zunächst die Datei auf die vordere HTML-Seite hoch: zum Beispiel:
Kopieren Sie den CodeDer Code lautet wie folgt:
<form method="post" action="php文件" enctype="multipart/form-data"> <h3>导入Excel表:</h3><input type="file" name="file_stu" /> <input type="submit" value="导入" /> </form>
Zweitens verarbeiten Sie die Datei in der entsprechenden PHP-Datei
Kopieren Sie den Code Der Code lautet wie folgt:
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 ( '导入数据库失败' ); } } } }
Drittens: ExcelToArrary-Klasse, die zum Referenzieren von PHPExcel und zum Verarbeiten von Excel-Daten verwendet wird
Code kopieren Der Code lautet wie folgt :
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; } }
Viertens ist das Obige der gesamte importierte Inhalt, das PHPExcel-Paket ist am Ende angehängt.
(2) Excel-Export (viel einfacher als Importieren)
Ermitteln Sie zunächst die Datenbank zum Generieren von Excel-Daten, z. B.:
$data= M('User')->findAll(); //查出数据 $name='Excelfile'; //生成的Excel文件文件名 $res=service('ExcelToArrary')->push($data,$name);
Zweitens die ExcelToArrary-Klasse, die zum Referenzieren von PHPExcel und zum Verarbeiten von Daten verwendet wird
Code kopieren Der Code lautet wie folgt:
class ExcelToArrary extends Service{ public function __construct() { /*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/ include_once('./Excel/PHPExcel.php'); } /* 导出excel函数*/ public function push($data,$name='Excel'){ error_reporting(E_ALL); date_default_timezone_set('Europe/London'); $objPHPExcel = new PHPExcel(); /*以下是一些设置 ,什么作者 标题啊之类的*/ $objPHPExcel->getProperties()->setCreator("转弯的阳光") ->setLastModifiedBy("转弯的阳光") ->setTitle("数据EXCEL导出") ->setSubject("数据EXCEL导出") ->setDescription("备份数据") ->setKeywords("excel") ->setCategory("result file"); /*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/ foreach($data as $k => $v){ $num=$k+1; $objPHPExcel->setActiveSheetIndex(0) //Excel的第A列,uid是你查出数组的键值,下面以此类推 ->setCellValue('A'.$num, $v['uid']) ->setCellValue('B'.$num, $v['email']) ->setCellValue('C'.$num, $v['password']) } $objPHPExcel->getActiveSheet()->setTitle('User'); $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$name.'.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; }
Drittens Das Obige ist der gesamte exportierte Inhalt, das PHPExcel-Paket ist am Ende angehängt.
Verwandte Empfehlungen:
thinkPHP+phpexcel implementiert das Beispiel für die Ausgabefunktion für Excel-Berichte
Thinkphp5+PHPExcel implementiert die Funktion zum Batch-Upload von Formulardaten
Das obige ist der detaillierte Inhalt vonVerwenden Sie phpExcel, um Excel-Daten zu importieren und zu exportieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!