WordPess 导入 Excel 表格并保存为 HTML 表格到自定义字段

文 / @WordPress主题

使用WordPress开发网站时的数据导入方法

我是一名WordPress开发者,今天我来和大家分享一个提高WordPress开发效率的方法——直接导入Excel表格到数据库。特别是对于数据量非常大的情况,一个个在后台上传太浪费时间了。

第一步:上传Excel表格并保存为附件,附加到文章

这个步骤比较简单,关键的一步是获取上传的文件并保存到自定义字段。具体可以通过添加一个自定义函数作为回调来实现上传文件,也可以做一个上传Excel文件用的Metabox,对于对WordPressMetaboxAPI非常熟悉的人来说,这种方法更容易上手。

$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 '<table>';
for($row=1;$row<=$highestRow;++$row){
echo '<tr>';
for($col=0;$col<$highestColumnIndex;++$col){
$cell=$worksheet->getCellByColumnAndRow($col,$row);
$val=$cell->getValue();
echo '<td>'.$val.'</td>';
}
echo '</tr>';
}
echo '</table>';

}

$output=ob_get_contents();
ob_end_clean();

//把生成的HTML表格保存到自定义字段中,前台显示的时候,直接调用这个自定义字段就可以了。
update_post_meta($post_ID,'wizhi_excel_imported_content',$output);

总结和说明

实际应用场景不同,数据导入的实现方法也各不相同。在这个案例里面,我们粗暴地将Excel表格里面的数据保存成了HTML表格,而没有根据字段类型导入相应的文章字段。如果需要将Excel表格里面的数据导入到文章字段(如标题、正文等),可以在第二步生成HTML表格的时候做一些判断,然后写入相应的字段。如果您对本文中的方法有更好的实现方式或者其他疑问,请在评论区与我交流。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。