Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857

Опять о *.csv

29.10.2013, 23:00. Показов 8588. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Было прочитано много постов о о проблемах работы с .csv, но конкретных рекомендаций нет.
Сама задача, создать некий простенький редактор .csv. В нем пока планируется сделать редактирование значений и комбинированные фильтры.
Связи с этим у меня созрело 3 вопроса:
1.Можно ли отображать *.csv в DBGrid как таблицу ? Сейчас использую ADO и в DBGride отображается как столбец, наполненный построчно вместе с разделителями.
2. Каким способом можно редактировать *.csv файл ? Сейчас если менять в строке любое значение (не трогая разделители) то пишет что драйвер не поддерживает редактирование данного типа таблиц.
3. Если все так ужасно, может лучше перед открытием файла его конвертировать в exel или что нибудь другое, что можно будет в последствии легко редактировать, а после всех работ с файлом опять cохранять в .csv ?
Заранее спасибо, буду рад прочитать ваши мненния.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2013, 23:00
Ответы с готовыми решениями:

Опять MDI и опять нет активной формы
В общем, перед тем, как налетать на меня за эту тему, скажу, что я потратил более 6 часов на эксперименты и изучение всех возможных постов...

Экспорт данных после обработки в *.csv, используя Export-Csv
Данные находятся в файле sample.csv Команда Import-Csv -Encoding default -Delimiter ";" sample.Csv | ForEach-Object...

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

44
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
29.10.2013, 23:03
Посмотреть может есть сторонние библиотеки/компоненты для работы *.csv
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.10.2013, 23:12  [ТС]
Гугл ничего путного в этом плане не дал. Да и думаю на форумах это бы сразу выносилось как решение проблемы. Так что с библиотека пока грустно.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
29.10.2013, 23:26
А как выглядит примерно файл ?
Может его распарсить и поместить в StringGrid ?

Так же в интернете упоминается JvCsvDataSet и http://didier.cabale.free.fr/d... vTransform
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.10.2013, 23:46  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
А как выглядит примерно файл ?
Может его распарсить и поместить в StringGrid ?
обычный .csv.
пример:
Имя поля;Имя поля;Имя поля;Имя поля;Имя поля;Имя поля;Имя поля
число;текст;;;число;число;текст.
число;текст;текст;число;;число;текст

ну вот со StringGrid где то читал и идея не плохая.Надо будет попробовать реализовать.
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
30.10.2013, 00:05
Про Builder ничего не знаю, но скажу :-)

К сожалению, нет единого стандарта на CSV, разделители в том числе. Даже в разных программах одного производителя импорт и экспорт может выглядеть по-разному. Обычно, разделитель, это ',', но у M$ может быть и ';'. Если строка импортируется как единственный столбец, причин может быть две:
1. Неверный разделитель. Попробуйте сменить ',' на ';' и наоборот. Редко используется что-то еще.
2. Значения полей (не) заключены в двойные кавычки. Так: "value". Одни программы не принимают данные без двойных кавычек, другие наоборот, третьи используют их только для нечисловых значений. Поиграйтесь.

Если возможен экспорт в CSV, создайте однострочную таблицу из чисел и текста и выведите ее: скорее всего, формат входного файла должен быть таким же.

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

Разделители (',', ';') внутри текстовых полей в двойных кавычках, обычно, воспринимаются правильно, но (от греха подальше), лучше, если их там не будет.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.10.2013, 00:08
Цитата Сообщение от demon_7 Посмотреть сообщение
обычный .csv.
пример:
Имя поля;Имя поля;Имя поля;Имя поля;Имя поля;Имя поля;Имя поля
число;текст;;;число;число;текст.
число;текст;текст;число;;число;текст
ну вот со StringGrid где то читал и идея не плохая.Надо будет попробовать реализовать.
Ну так есть TStringList ( наследник от TStrings) в нем можно указывать разделитель и можно на основе его попробовать соорудить редактор.

Пример https://www.cyberforum.ru/blog... tom27.html
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 18:28  [ТС]
приоритеты я видимо расставил не правильно.
Допустим мы загнали .csv в табличный вид, вторая проблема, невозможность редактировать стирает все усилия по отображению.
Надеюсь изложил все понятно
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.10.2013, 18:30
Цитата Сообщение от demon_7 Посмотреть сообщение
евозможность редактировать стирает все усилия по отображению.
Непонятно ... что мешает редактировать, а потом сохранить ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.10.2013, 18:34
Я думаю, если Excell можно загрузить в DBGrid, то почему бы csv нельзя
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 19:15  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Я думаю, если Excell можно загрузить в DBGrid, то почему бы csv нельзя
Дык я и не говорю что нельзя. Он грузится только отображается 1 столбцом, стоки в нем некий набор параметров с разделителями ";".

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Непонятно ... что мешает редактировать, а потом сохранить ?
возможность редактировать мешает драйвер которым открывается .csv. И по постам на форумах, как я понял другим драйвером его не открыть.
Либо Вы имели ввиду редактировать его на неком другом уровне и другими средствами?

Добавлено через 11 минут
Отображение http://rghost.ru/49826702.view
Редактирование http://rghost.ru/49826717
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.10.2013, 19:25
Цитата Сообщение от demon_7 Посмотреть сообщение
возможность редактировать мешает драйвер которым открывается .csv.
Блин я же привел ссылку как руками разбивать/объединять можно и помещать в StringGrid
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 19:30  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Блин я же привел ссылку как руками разбивать/объединять можно и помещать в StringGrid
Да, я за это вам благодарен. Еще не было возможности потестить тот код, так как тока пришел с работы.
Но опять же как я написал выше...смысл возиться с отображением, если не совсем понятно как его потом редактировать.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.10.2013, 19:33
Смысл выдавать бессмысленные предположения...

Вместо жалоб могли б уже давно руками написать, если не с помощью TStringList так с помощью регулярок.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 19:55  [ТС]
Давайте не будем разводить полемику. Может я выразился не понятно.
Начну с более подробного описания проблемы, если это приведет к взаимному пониманию.
Доступ к данным в файле осуществляется через ADOConnetion и ADOQuery.
Строка подключения в конекте такая:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Adminata Source=C:\csv\;Mode=ReadWrite|Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLEDB:Engine Type=96;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;
В Query делается обычный селектовский запрос на файл.
SELECT * FROM ti.csv
При этом всем раскладе если менять значение в стоке, не трогая разделитель вылазит ошибка http://rghost.ru/49826717.view
Если эта ошибка из за того что файл отображается не в табличном виде, что думаю врядли, тогда мое почтение, извините что туплю.
Если же нет, то мне надо решить эту проблему, а потом уже пробовать выводить в приятный вид.
Заранее спасибо.
0
30.10.2013, 20:00

Не по теме:

Цитата Сообщение от demon_7 Посмотреть сообщение
Доступ к данным в файле осуществляется через ADOConnetion и ADOQuery.
Лбом об стенку :wall:

1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 21:34  [ТС]
Каюсь.
Разобрался с вашим примером. все было куда проще чем заморачивался, Благодарю за помощь и нервы потраченные на меня =).
Осталось только придумать как задавать параметры строк и столбцов по содержимому фалов и придумать сортировку.
Еще раз спасибо.

Добавлено через 43 минуты
Avazart, а не подскажете такой момент, в при использовании Вашего примера, а именно загрузку файла, указвается разделитель ';', у меня есть столбцы в котором текстовое значение из пары слов и пробелы между ними он воспринимает тоже, как разделители. То есть идет сдвигание значений. Как этого избежать?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.10.2013, 22:00
Цитата Сообщение от demon_7 Посмотреть сообщение
у меня есть столбцы в котором текстовое значение из пары слов и пробелы между ними он воспринимает тоже, как разделители.
Несколько слов нужно оборачивать в кавычки... - "вот так примерно".
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
30.10.2013, 22:05  [ТС]
интересное предложение)
работать с .csv из 100+ строк в котором около 5 столбцов текстовые, заковычивая весь текст с пробелами, перед тем как открыть написанным приложением ) а потом провернуть все то же в обратную сторону, чтоб подгрузить файл)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.10.2013, 22:09
Используйте регулярки для разбиения, или вручную разбивайте в чем проблема ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2013, 22:09
Помогаю со студенческими работами здесь

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у...

Конвертировать CSV ANSI в CSV UTF-8 или шо делать
Привет, есть проблема, импортирую данные из CSV в mssql через Винформс, все хорошо инсертится если CSV файл открыть блокнотом и изменить...

Разбиение CSV файла на много csv файлов по разделителю
Здравствуйте, есть файл в который нужно разделить, но не ровно по 30 строк например, а по 25, 23, 27. Как это можно сделать?

Опять БАН опять Яндекс...
Вообщем ситуация такая, был сайт, написаный на дримвевере, отлично индексируемый и имеющий 400-500 переходв с поисковика яндекса. Стали...

Gameorplay Опять и опять
Здравствуйте, уважаемые знатоки. Помогите пожалуйста решить проблему с автоматическим запуском Firefox при старте Windows и открытия сайта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru