Как отредактировать ячейку или столбец в csv файле?

Подскажите как отредактировать ячейку или столбец в csv файле? средствами php

Есть csv файл с 6 строк скажем

id,найменование,цена,количество,сума

1,ложка,34,2,32 
2,кружка,23,4,66
3,тарелка,45,6,352 
4.вилка,21,3,235

скажем как перезаписать суму 34*2=

$cart = file("data/file.csv");

  $total_sum = 0;
$summa = 0;
foreach($cart as $elem => $line)
{
    if(!strripos($line, ",")) continue;
    $elem = explode(",",$line);
    $summa += $elem[2];

  echo '<tr>
   <td>'.$elem[1].'</td>
   <td>'.$elem[2].'</td>
   <td>'.$elem[3].'</td>
   <td>'.$elem[2] * $elem[3].'</td>
   <td>'.$elem[4].'</td>
   </tr>';
}

   echo '<tr><td colspan="3" >'.$summa.'</td>
   <td>'.$total_sum.'</td><td></td></tr>';
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Если нужно редактировать весь столбец, а не отдельные ячейки по конкретным адресам, то стоит взять opensource.box.com/spout
заточенный под потоковую обработку через итераторы (жрет ресурсов существенно меньше PHPExcel/PhpSpreadsheet)
Ответ написан
Комментировать
boykopetro
@boykopetro Автор вопроса
шото я нарыл

// парсим csv файл
$data = array_map('str_getcsv', file('data/file.csv'));
 
$col_number = 5; # порядковый номер поля
$row_number = 1; # порядковый номер записи
 
// заменяем значение на 24
$data[$row_number-1][$col_number-1] = $sum += 3 * 6;
 
// открываем файл
$csv_file = fopen('data/file.csv','w');
 
// $rows - это массив записей (с изменениями)
foreach($data as $rows) {
    // форматируем массив в csv и записываем в файловый указатель
    fputcsv($csv_file, $rows);
}
// закрываем файл
fclose($csv_file);
 
// смотрим конечный результат уже из измененного файла
echo '<pre>';
print_r(array_map('str_getcsv', file('data/file.csv')));
echo '</pre>';


// Искомое значение
$need = 'вилка';
// Строка для замены
$repl = 'Большая вилка';
// Путь к csv-файлу
$csv_file = 'data/file.csv';

// Новый массив с данными для записи в csv-файл
$csv_new = array();

// Если файл доступен для чтения
if (($fp = fopen($csv_file, 'r')) !== false) {
    // Читать построчно, сохраняя каждую его строку во временный массив
    while (($arr = fgetcsv($fp, 1000, ',')) !== false) {
        // Если найдено искомое значение
        if (($k = array_search($need, $arr)) !== false) {
            // Перезаписать ячейку массива
            $arr[$k] = $repl;
        }
        // Сохранить временный массив в новый двумерный массив
        $csv_new[] = $arr;
    }
    fclose($fp);
}

// Если файл доступен для записи
if (($fp = fopen($csv_file, 'w')) !== false) {
    // Проходим по массиву
    foreach ($csv_new as $fields) {
        // И пишем данные в csv-файл
        fputcsv($fp, $fields);
    }
    fclose($fp);
}


как это все разложить в форму и редактировать два столбца и вопше это какято неправильная затея как типерь записать всю суму
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект