Сервис для преобразования файла Тинькофф, или моя любовь к phpExcel

19.08.16

Интеграция - Загрузка и выгрузка в Excel

Статья для тех, кому интересно кроссплатформенное чтение и запись Exсel файлов, а также для тех, кто пользуется табличкой Тинькова, чтобы следить за своим ежедневным бюджетом.

Прочитав статью   У вас меньше денег, чем вы думаете стал пользоваться их замечательной табличкой.

Однако расходы заносить вручную неудобно. Из интернет банка можно  расходы выгрузить в excel однако они сгруппированы не так как нужно для таблицы расходов. (Пример файла)

table1

 Нужно сгруппировать эту таблицу по датам, просуммировать по отрицательным значениям расходов, отсортировать в обратном порядке по датам и сконструировать общее описание для каждого дня (при этом некоторые расходы, такие как "снятие наличных" нужно пропустить).

Конечно, это можно сделать на vba в самом экселе за 10 минут (или сводными таблицами), но меня интересовала возможность php в данном вопросе, и я решил потратить денёк на изучение нового (для меня)

И вот что получилось:

Данный сервис помогает преобразовать в нужный вид расходы, вам останется только вставить данные в нужные колонки.

p.s. в файле никаких секретных данных не содержится, можете сами в этом убедиться, открыв его.

1. Выгружаем файл из интернет банка

2. Перетаскиваем файл на надпись "брось сюда файл" (или нажимаем кнопку "или выбери" и выбираем файл на диске)

3.Если всё получилось, то появится гиперссылка "обработанный файл", нажимаем.  (если ничего не получилось, то пишите на  info@gran-it.net с темой tcstransform)

В обработанном файле ячейки будут сгруппированы примерно так

table2

4. Вставляем нужные ячейки в ваш файл расходов.

Теперь немного о реализации

Для  обработки (чтения и записи) файлов excel я использовал замечательную библиотеку phpExcel

Вот немножго моего хард кода для чтения и записи:
function readExelFile($filepath){
require_once 'Classes/PHPExcel.php'; //подключаем наш фреймворк
date_default_timezone_set('UTC');
$ar=array(); // инициализируем массив
$inputFileType = PHPExcel_IOFactory::identify($filepath);  // узнаем тип файла, excel может хранить файлы в разных форматах, xls, xlsx и другие
$objReader = PHPExcel_IOFactory::createReader($inputFileType); // создаем объект для чтения файла
$objPHPExcel = $objReader->load($filepath); // загружаем данные файла в объект
$ar = $objPHPExcel->getActiveSheet()->toArray(); // выгружаем данные из объекта в массив
return $ar; //возвращаем массив
} 
 
function writeExelFile($filename,$ar){
require_once 'Classes/PHPExcel.php';
date_default_timezone_set('UTC');
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$active_sheet = $objPHPExcel->getActiveSheet();
$timestart=0;
$strk=2;
$strToline="";
$sumToline="=";
$active_sheet->getColumnDimension('H')->setWidth(80);
$active_sheet->setCellValue('G1','Дата');
$active_sheet->setCellValue('H1','Описание');
$active_sheet->setCellValue('I1','Траты');
foreach($ar as $ar_colls){
if ((!($ar_colls[8]=='Переводы/иб'))&&(!($ar_colls[2]=='FAILED'))&&(!($ar_colls[8]=='Наличные'))&&(!($ar_colls[4]>0))){
$str = $ar_colls[0];
if ($timestart==0){
$timestart=strtotime($str);
$dstart=date('d.m.Y',$timestart);
                  }
$curdata=strtotime($str);
$curd=date('d.m.Y',$curdata);
$sum=-1*$ar_colls[4];
if ($curd==$dstart){
if($strToline==''){$strToline=$ar_colls[8];} else{
$strToline=$strToline.'+'.$ar_colls[8];
}
$sumToline=$sumToline.'+'.$sum;
}  else {
	$active_sheet->setCellValue('G'.$strk,$dstart);
	$active_sheet->setCellValue('H'.$strk,$strToline);
	$active_sheet->setCellValue('I'.$strk,$sumToline);
	$sumToline="=".$sum;
	$strToline=$ar_colls[8];
	$strk++;
        }	
$dstart=$curd;                                                                                                                         }
	                }	
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('convert/'.$filename);
exit();
} 

Загрузка файла на сервер и Drag&Drop реализованы через плагин jQuery File Upload, индикация загрузки через jQuery Knob

Вывод: С помощью phpExcel и минимальных знаний php, можно организовать любую обработку файлов excel причём даже еслу у вас нет ни Excel ни Винды.

Ещё раз, ссылка на сервис

Приветствуются комментарии.

phpexcel Тинькофф контроль бюджета

См. также

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210162    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150714    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    31893    226    63    

117

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15745    10    17    

11

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    214923    925    886    

939
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ibrogim 1311 19.08.16 11:47 Сейчас в теме
2. vano-ekt 123 19.08.16 12:19 Сейчас в теме
Опалихинская ... с Заречного значит ... :-D
3. vano-ekt 123 19.08.16 12:25 Сейчас в теме
зы, а заправляемся в Башнефти на Бебеля...
"Деанонимизация программиста возможна не только через исходный код, но и через скомпилированный бинарный файл" (с) Хабр
4. Ibrogim 1311 19.08.16 12:44 Сейчас в теме
(3) vano-ekt,
а заправляемся в Башнефти на Бебеля
Где же ещё, тамже рубль с литра скидка
Оставьте свое сообщение