This is an improved version of Rahel Shann's accepted answer - I edited his answer, but my editing was rejected, however this is an important change ...
When analyzing each row of data, it is impractical to use explode() in a comma, since this does not process explode() strings containing commas. Explode breaks these lines into substrings and provides additional array elements in $values , so this check is not performed:
if (count($keys) == count($values)) {
Instead, PHP has a specially designed method for this; str_getcsv () . I updated the response source code accordingly.
CSV Reader Library:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class CSVReader { var $fields;/** columns names retrieved after parsing */ var $separator = ';';/** separator used to explode each line */ var $enclosure = '"';/** enclosure used to decorate each field */ var $max_row_size = 4096;/** maximum row size to be used for decoding */ function parse_file($p_Filepath) { $file = fopen($p_Filepath, 'r'); $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure); $keys = str_getcsv($this->fields[0]); $i = 1; while (($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false) { if ($row != null) { // skip empty lines $values = str_getcsv($row[0]); if (count($keys) == count($values)) { $arr = array(); for ($j = 0; $j < count($keys); $j++) { if ($keys[$j] != "") { $arr[$keys[$j]] = $values[$j]; } } $content[$i] = $arr; $i++; } } } fclose($file); return $content; } } ?>
Controller Method:
function readExcel() { $this->load->library('csvreader'); $result = $this->csvreader->parse_file('Test.csv'); $data['csvData'] = $result; $this->load->view('view_csv', $data); }
And this is the view:
<table cellpadding="0" cellspacing="0" width="100%"> <tr> <td width="10%">ID</td> <td width="20%">NAME</td> <td width="20%">SHORT DESCRIPTION</td> <td width="30%">LONG DESCRIPTION</td> <td width="10%">STATUS</td> <td width="10%">PARENTID</td> </tr> <?php foreach ($csvData as $field) { ?> <tr> <td><?php echo $field['id'] ?></td> <td><?php echo $field['name'] ?></td> <td><?php echo $field['shortdesc'] ?></td> <td><?php echo $field['longdesc'] ?></td> <td><?php echo $field['status'] ?></td> <td><?php echo $field['parentid'] ?></td> </tr> <?php } ?> </table>
ajmedway
source share