Как прочитать файл XLS и преобразовать его в формат CSV

#php #excel #csv #customization

#php #excel #csv #настройка

Вопрос:

У меня есть следующие данные в 1-м столбце моего файла XLS

 <table border="1">
<tr>
    <th align="left">First Name</th>
    <th align="left">Gender</th>
    <th align="left">Nationality</th>
</tr>
<tr>
    <td align="left">Mike</td>
    <td align="left">M</td>
    <td align="left">Singaporean</td>
</tr>
  

Я хотел бы преобразовать его в файл CSV, поэтому вывод должен быть в файле CSV

 First Name Gender Nationality
Mike       M      Singaporean
  

Я уже видел https://sourceforge.net/projects/phpexcelreader /

Как этого добиться с помощью пользовательского PHP-скрипта?

Ответ №1:

Получить данные из файла xls — $dataArray Я только что включил функцию экспорта

В контроллере

 /** Function that is used to do export functionality
 *
 * @return Response
 */
public function exportAction(Request $request)
{
    $delimiter = '';

    if ($request->getMethod() == 'POST') {
        /* Form values */
        $csvType = $request->request->get('CSVtype');

        /* setting the CSV type delimiter */
        $delimiter = ($csvType == "colonSep") ? ";" : ",";
        /* Ends here */

    }

    $response = $this->createCsvfile($dataArray, $columnNames, $delimiter);

    return $response;
}

/**
 * Function that is used to generate csv data
 *
 * @param Array   $dataArray   Data array
 * @param Strings $columnNames Column names
 * @param Int     $delimiter   Delimiter

 *
 * @return String
 */
private function generateCsv($dataArray, $columnNames, $delimiter)
{
    $delimiter = '"' . $delimiter . '"';

    $content = '"' . implode($delimiter, str_replace('"', '', $columnNames)) . '"';
    $content .= "n";
    foreach ($dataArray as $value) {
       $content .= '"' . implode($delimiter, str_replace('"', '', $value)) . '"' . "n";
    }

    return $content;
}



/**
 * To create csv file
 * @param array  $finalResultArray selected  club      data
 * @param array  $columnNames      selected  columns
 * @param String $delimiter        delimiter

 *
 * @return SymfonyComponentHttpFoundationResponse
 */
private function createCsvfile($finalResultArray, $columnNames, $delimiter)
{

    $filename = 'export_' . date("Y-m-d") . '_' . date("H-i-s") . '.csv';
    $response = new Response();
    // prints the HTTP headers followed by the content
    $response->setContent(utf8_decode($this->generateCsv($finalResultArray, $columnNames, $delimiter)));
    $response->setStatusCode(200);
    $response->headers->set('Content-Type', 'application/csv; charset=utf-8');
    $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
    $response->headers->set('Content-Transfer-Encoding', 'binary');

    return $response;
}
  

Комментарии:

1. Привет @missgorge. Похоже, это один из MVC. Не могли бы вы дать мне, пожалуйста, в corePHP?