這個方法是借助phpoffice/phpexcel來完成的,話不多說,我們直接上碼
/**
* 安裝excel處理類 composer require phpoffice/phpexcel
* @return hinkesponseJson
* @throws PHPExcel_Reader_Exception
* @throws PHPExcel_Writer_Exception
* Created on 2018/12/26 23:29
* Created by Dh
*/
public function excelToHtml()
{
return $this->apiSuc(ActionExcel::excel2html(request()->file()));
}
/**
* 邏輯處理
* 將excel生成HTML
* @param $data 上傳的excle文件對象
* @return array 更加excel的sheet生成的HTML文件訪問路徑數(shù)組
* @throws PHPExcel_Reader_Exception
* @throws PHPExcel_Writer_Exception
* Created on 2018/12/26 23:27
* Created by Dh
*/
public static function excel2html($data)
{
$obj = $data['file'];
//上傳文件
$info = $obj->move(ROOT_PATH . 'public' . DS . 'uploads'. DS . 'file');
$filePath = $info->getPathname();
$externsion = $info->getExtension();
$fileFullName = $info->getFilename();
$htmlName = str_replace('.' . $externsion, '', $fileFullName);
//文件名自動判斷文件類型
$fileType = PHPExcel_IOFactory::identify($filePath);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($filePath);
$sheetIndex = $objPHPExcel->getSheetCount();
$objWriter = new PHPExcel_Writer_HTML($objPHPExcel);
//可以將括號中的0換成需要操作的sheet索引
$sheetHtml = [];
for ($i = 0;$i < $sheetIndex;$i++) {
//這里記得將文件名包含進去
$savePath = ROOT_PATH . 'public' . DS . 'uploads' . DS . 'html' . DS . $htmlName . '_' . ($i+1) . '.html';
$objWriter->setSheetIndex($i);
//保存為html文件
$objWriter->save($savePath);
$downloadPath = config('setting.site_url') . '/uploads/html/'. $htmlName . '_' . ($i+1) . '.html';
array_push($sheetHtml, $downloadPath);
}
return $sheetHtml;
}
這里是集成在thinkphp5中的寫法,其他框架或者直接原生代碼,實現(xiàn)的邏輯都是一樣的.那么我們再次梳理一遍
1. 上傳文件
2. 讀取文件
3. 寫入HTML文件
4. 輸出新的HTML文件