使用 WordPress开发网站时,有时候会遇到数据量非常大的情况,如果一个个在后台上传,效率太低了。提高效率的一个有效方法是直接导入 Excel 到数据库,特别是针对一些结构性不强的数据,如果数据是现成的 Excel 表格,那就太好了,直接上传,保存文章,数据就直接保存在数据库中了,可以节省不少时间。下面我来为大家简单介绍一下导入 Excel 表格到 WordPress 数据库的方法,本文的实现方法中用到了鼎鼎大名的 PHPExcel 库,首先我们假设你已经引入了这个库。
第一步:上传 Excel 表格,并保存为附件,附加到文章。
这一步相对简单,具体的步骤就不说了,很多 Metabox 插件生成的表单都支持添加一个自定义函数作为回调,当然,如果你对 WordPress Metabox API 非常熟悉的话,也可以直接做一个上传 Excel 文件用的 Metabox。在这里,关键的一步就是获取上传的文件,并保存到自定义字段。
$improt_data = sanitize_text_field( $_POST[ 'wizhi_excel_import' ] ); update_post_meta( $post_ID, 'wizhi_excel_import', $improt_data );
第二步:获取保存的自定义字段
在上一步中,我们把上传的 Excel 附件以附件 ID 的方式保存到了自定义字段,在这一步,我们先获取保存的 Excel 附件 ID,然后再根据附件 ID 获取 Excel 文件的实际路径。得到了 Excel 文件后,我们就可以用 PHPExcel 库读取文件,然后根据读取的信息生成一个 HTML 表格,然后把这个表格保存到自定义字段就可以了。
// 获取 Excel 附件 ID $excel_id = get_post_meta( $post_ID, 'wizhi_excel_import', true ); // 获取 Excel 文件的实际路径 $excel_file = get_attached_file( $excel_id ); // 实例化 PHPExcel 加载文件类 $objPHPExcel = PHPExcel_IOFactory::load( $excel_file ); // 开始读取文件,并生成 HTML 表格 ob_start(); foreach ( $objPHPExcel->getWorksheetIterator() as $worksheet ) { $highestRow = $worksheet->getHighestRow(); // 获取最大行数 $highestColumn = $worksheet->getHighestColumn(); // 获取最大列数 $highestColumnIndex = PHPExcel_Cell::columnIndexFromString( $highestColumn ); echo '
' . $val . ' | '; } echo '
总结和说明
这个案例里面,实际需求只是把 Excel 表格里面的数据导入,转换成 HTML 表格,所以,我们直接粗暴的保存成了 HTML 表格的方式,并没有根据字段类型导入相应的文章字段里面。如果需要把 Excel 表格里面的数据导入到文章字段,如标题、正文等,在第二步生成 HTML 表格的时候,做一些判断,然后写入相应的字段就可以了,不同的应用场景,实现方法各不相同,在这是就不展开讲了。如果你对文章中介绍的方法有疑问,或者有更好的实现方法,欢迎在评论中交流。