我在mysql数据库中保存excel文件时遇到问题,它包含一个单元格内的enter(换行符)和符号&上标也是。但它只存储为纯文本。
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
然后我读了一些数据并使用
reset($sheetData);
重置指针。
并再次使用foreach()
循环,将数据添加到数组并将该数组插入mysql表。这些步骤中是否删除了预格式化(单元格内的上标/下标/新行和粗体/斜体)?如何将数据完全放在表格中?
编辑:我使用的是PHPExcel的v1.8,PHP的v5.4和MySQL v5.6
答案 0 :(得分:0)
include APPPATH.'/spreadsheetreader/php-excel-reader/excel_reader2.php';
require(APPPATH.'/spreadsheetreader/SpreadsheetReader.php');
require(APPPATH.'/spreadsheetreader/SpreadsheetReader_CSV.php');
require(APPPATH.'/spreadsheetreader/SpreadsheetReader_ODS.php');
require(APPPATH.'/spreadsheetreader/SpreadsheetReader_XLS.php');
require(APPPATH.'/spreadsheetreader/SpreadsheetReader_XLSX.php');
class Dashboard extends REST_Controller
{
public function __construct()
{
parent:: __construct();
$this->load->library("PHPExcel");
}
public function dashboard_post()
{
$Reader = new SpreadsheetReader('./upload/'.$filename);
$totalSheet = count($Reader->sheets());
//print_r($totalSheet);exit;
// For Loop for all sheets
if($totalSheet>0)
{
for($i=0;$i<$totalSheet;$i++)
{
$Reader->ChangeSheet($i);
foreach ($Reader as $Row)
{
$data=array(
'your table column name'=>isset($Row[1]) ? $Row[1] : '',
'your table column name'=>isset($Row[2]) ? $Row[2] : '',
'your table column name'=>isset($Row[3]) ? $Row[3] : '',
'your table column name'=>isset($Row[4]) ? $Row[4] : '',);
}
答案 1 :(得分:0)
toArray()
方法旨在提供 简单 功能,以便从电子表格中的数据单元格中获取纯文本;所以&#34;格式化&#34;富文本(包含不同样式,颜色,换行符和单元格内容不同部分的字体信息的单元格)将被删除以提供该纯文本。
如果要访问该样式信息,则需要使用单元格的getValue()
方法自行获取各个单元格中的数据;因此,您需要编写自己的循环来为表格中的所有单元格执行此操作;并且您需要决定如何在数据库中存储上标或粗体/斜体/下划线等内容,并相应地解析富文本单元格数据