【问题标题】:How to read XLS file & convert it to CSV format如何读取 XLS 文件并将其转换为 CSV 格式
【发布时间】:2016-10-13 04:25:18
【问题描述】:

我的 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脚本如何实现?

【问题讨论】:

    标签: php excel csv customization


    【解决方案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 \Symfony\Component\HttpFoundation\Response
     */
    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;
    }
    

    【讨论】:

    • 嗨@missgorge。这似乎是 MVC 之一。请问可以给我corePHP吗?
    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2017-04-26
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多