作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将 .xlsx 文件转换为 .csv 时遇到问题。当我尝试转换它时,会出现 csv 文件并激活 Text Wrap。问题是,我需要将该 csv 文件导入数据库,而当前格式不允许我这样做。我有一个问题,如何在保存 csv 文件时禁用文本换行,或者在将文件导入数据库时忽略文本换行?
转换:
require_once 'Classes/PHPExcel.php'; // (this should include the autoloader)
require_once 'Classes/PHPExcel/IOFactory.php';
$excel_readers = array(
'Excel5' ,
'Excel2003XML' ,
'Excel2007'
);
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$reader->setReadDataOnly(true);
$path = 'temp.xlsx';
$excel = $reader->load($path);
$writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
$writer->setDelimiter(',');
$writer->save('temp.csv');
if (file_exists('temp.csv')) {
$i=0;
require "connection.php";
$handle = fopen("temp.csv", "r");
$import=$db->prepare("INSERT INTO adherence(
dateandtime,
lastname,
firstname,
paidtime,
approvedtime,
notadhering) VALUES(
?,?,?,?,?,?)");
while (($data = fgetcsv($handle, 1000, ',', "'")) !== FALSE) {
if($i>0) {
$data = str_replace('"', '', $data);
$myDate = date("Y/m/d",strtotime(str_replace('/','-',$data[0])));
$import->bindParam(1, $myDate, PDO::PARAM_STR);
$import->bindParam(2, $data[1], PDO::PARAM_STR);
$import->bindParam(3, $data[2], PDO::PARAM_STR);
$import->bindParam(4, $data[3], PDO::PARAM_STR);
$import->bindParam(5, $data[4], PDO::PARAM_STR);
$import->bindParam(6, $data[5], PDO::PARAM_STR);
$import->execute();
}
$i++;
}
$removal=$db->prepare("delete FROM adherence WHERE approvedtime = '0' OR notadhering IS NULL");
$removal->execute();
fclose($handle);
echo 'IMPORTED' ;
}
最佳答案
我怀疑它是导致问题的“换行文本”,而是单元格中的换行符。 PHPExcel 不提供任何方法来自动删除这些。最好的选择是遍历单元格,替换所有出现的"\n"
。有一个空格。
编辑
就像是
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
foreach ($worksheet->getColumnIterator() as $column) {
$cellIterator = $column->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(true);
foreach ($cellIterator as $cell) {
// Convert any rich text cells to plain text
if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_INLINE) {
$cell->setValueExplicit($cell->getValue()->getPlainText());
}
// Remove any newline characters in string cells
if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING) {
$cell->setValue(str_replace("\n", " ", $cell->getValue()));
}
}
}
}
关于PhpExcel 换行文本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836484/
我是一名优秀的程序员,十分优秀!