gpt4 book ai didi

PhpExcel 换行文本问题

转载 作者:行者123 更新时间:2023-12-04 20:40:53 24 4
gpt4 key购买 nike

我在将 .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' ;
}

任何援助将不胜感激!

编辑
生成的 csv 文件用 excel 打开:
generated csv file opened with excel

禁用自动换行后的相同文件
Same file after disabling wrap text

最佳答案

我怀疑它是导致问题的“换行文本”,而是单元格中的换行符。 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com