PhpExcel Wrap текстовая проблема

1

У меня проблемы с преобразованием файла.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' ;
        }

Любая помощь будет оценена!

EDIT созданный файл csv, открытый с помощью excel: Изображение 174551

Тот же файл после отключения текста обмотки Изображение 174551

Теги:
csv
excel
xlsx
phpexcel

1 ответ

1
Лучший ответ

Я сомневаюсь, что это "обернуть текст", что вызывает проблемы, но новые линейные символы в ячейках. 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()));
            }
        }
    }
}

может помочь

  • 0
    Ничего из этого в клетках, все же, как это проверить, чтобы быть уверенным?
  • 0
    Я могу с полной уверенностью заявить, что стиль «обтекание текстом» не применяется нигде в CSV Writer; так что ваша проблема не имеет ничего общего с "перенос текста"
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню