Из программы Си++ заполнить Excel-файл
Новые строки - просто новые строки в текстовом файле.
CSV is a delimited data format that has fields/columns separated by the comma character and records/rows separated by newlines. Fields that contain a special character (comma, newline, or double quote must be enclosed in double quotes. However, if a line contains a single entry which is the empty string, it may be enclosed in double quotes. If a field's value contains a double quote character it is escaped by placing another double quote character next to it. The CSV file format does not require a specific character encoding, byte order, or line terminator format.
Each record is one line terminated by a line feed (ASCII/LF=0x0A) or a carriage return and line feed pair (ASCII/CRLF=0x0D 0x0A however, line-breaks can be embedded.
Fields are separated by commas.
1997,Ford,E350
Leading and trailing spaces or tabs, adjacent to commas, are trimmed. This requirement is contentious and in fact is specifically prohibited by RFC 4180, which states, "Spaces are considered part of a field and should not be ignored."
1997, Ford , E350
same as
1997,Ford,E350
Fields with embedded commas must be delimited with double-quote characters.
1997,Ford,E350,"Super, luxurious truck"
Fields with embedded double-quote characters must be delimited with double-quote characters, and the embedded double-quote characters must be represented by a pair of double-quote characters.
1997,Ford,E350,"Super ""luxurious"" truck"
Fields with embedded line breaks must be delimited by double-quote characters.
1997,Ford,E350,"Go get one now
they are going fast"
Fields with leading or trailing spaces must be delimited by double-quote characters. (See comment about leading and trailing spaces above.)
1997,Ford,E350," Super luxurious truck "
Fields may always be delimited by double-quote characters, whether necessary or not.
"1997",Ford,E350
The first record in a csv file may contain column names in each of the fields.
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar
year,brand,model,comment,price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition"""4900.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
Только в Excel`е вместо ',' используется почему-то ';'.
FILE * Orders;
Orders = fopen("order.xls","w");
fprintf(Orders,"year,brand,model,comment,price");
?
fprintf(Orders,concat("year,brand,model,comment,price",EOL;А потом - данные (и не забудь их ескейпить!)
FILE * f;
f = fopen("f.xls","w");
fprintf(f,"year\tbrand\tmodel\tcomment\tprice");
fclose(f);
Тебе очень повезло, что автоопределение типа сработало правильно, и вдвойне повезло, что оно вообще сработало для файла с расширением .xls.
Правильное поведение программы просмотра в таком случае - сказать "у вас тут в этом .xls лежит хз что, я не знаю, что это - уберите от меня свой битый .xls-файл, и дайте что-нибудь нормальное".
Так что не трахай себе и другим мозги, а сделай csv.
Так что не трахай себе и другим мозги, а сделай csv.А завтра ему понадобится форматирование: выделение жЫрным шрифтом, таблички... И пойдёт он читать про COM и ExcellApplication.
А завтра ему понадобится форматирование: выделение жЫрным шрифтом, таблички...Надо полагать, в Text (Tab Delimited) это можно сделать без проблем?
Тогда уж пусть делает настоящий экселевский файл, а не такую хрень, названную как экселевский файл.
лучше пусть читает про excelml, благо 2003 excel уже более менее у всех стоит.
(да и изначально я, в принципе и спрашивал об этом, потому что в тот же ворд фиг пойми как грамотно запихать обычную тесктовую инфу)
эксель сейчас мой файл прочитал и не ругнулся - большего мне от него не нужно
эксель сейчас мой файл прочитал и не ругнулся - большего мне от него не нужноО других людях ты не думаешь?
Или этот файл - для внутреннего употребления?
все равно не у всех стоит эксель, поэтому распечатка на других компах будет из txt-файла
все равно не у всех стоит эксель, поэтому распечатка на других компах будет из txt-файлаНу так сделай .csv!
Пусть у меня всё через жопу и не по стандарту
все правильно - он же пишет под винду для ескеля
все правильноЭто у тебя предрассудки какие-то.
Да, винда более мягко относится к ошибкам программистов, чем другие ОС. Но это не повод считать, что такие ошибки нужно совершать.
Только в Excel`е вместо ',' используется почему-то ';'Используется символ, указанный как Разделитель элементов списка в Панель управления/Язык и региональные стандарты/Настройка на закладке Числа. Этот же символ нужно писать в формулах Excel, когда разделяешь параметры.
А типа в природе существует эксель неспособный прочитать такой текстовый файл ?
в уже имеющийся эксель файл не получается занести новые данные следующим методом:
goody = fopen("goody.xls","a");
fprintf(goody,"year\tbrand\tmodel\tcomment\tprice\n");
так мона сделать только с файлом, который и делался так же тупо из программы, а мне, как оказалось, нужно заполнять уже имеющийся шаблон.
Никто не может подсказать, как записывать в ячейки уже имеющегося эксель-файла? (который ПРАВИЛЬНЫЙ эксель файл)
(никакое расширение кроме xls использовать нельзя)
так мона сделать только с файлом, который и делался так же тупо из программыКонечно - потому что файл, который делался так тупо из программы - не является excel-файлом.
Никто не может подсказать, как записывать в ячейки уже имеющегося эксель-файла? (который ПРАВИЛЬНЫЙ эксель файл)С учётом того, что разные версии экселя хранят информацию в разном формате, ботать стандарт тебе не поможет, это огромное количество геморроя.
Лучше использовать что-то готовое, наверняка есть библиотеки для работы с экселевскими файлами.
думаю, где-нить в этой теме нужно разбираться
Юзать надо COM-компонетны, установленные экселем.
Стандарта по экселю нетНеправильно выразился - документация-то по формату есть, тоже в некотором роде стандарт.
Тут жизнь осложняет то, что было несколько версий этих .xls, вроде как, даже без обратной совместимости (то есть, не подойдёт вариант типа "считать .xls-файл как .xls последней версии, и дописать в него данные по её стандарту").
Есть результаты реверс-инженеринга, которые получены в результате попытки поддержать этот формат в OpenOffice, но никто не гарантирует, что всё работает так, как там написано, и что ничего, что там не написано ты не встретишь.
Просто вот на pdf и на rtf документация очень даже есть...
PDF и RTF - открытые форматы, DOC и XLS - закрытые
Киньте, пожалуйста ссылочку
PDF и RTF - открытые форматы, DOC и XLS - закрытые
В википедии ссылка была
Тебе зачем? Там документация на 1600 страниц. И она ещё ссылается на другие документации периодически.
2: Хочу научится вытаскивать встроенные в "потоки" файлы из своей программы. И уметь их разжимать тоже. Посмотрел доку — ищу готовое решение
там геморой, с матрицами экселевскими придется копаться - мой совет поищи какие нить готовые библиотеки или нароботки с работой с эксеклем. Я делал эту хрень на делфях года 2.5 назад. ТОж задача была считывать\заполнять данные в шаблоне экселя. Удачи!
Оставить комментарий
markyzz
то есть банально есть массив - его нужно перенести в Excel-файл. если кто-то делал это, спасибо за совет или пример кода.Большая просьба: если и посылать, то хотя бы не в гугл, а на ссылки с инфой.
Спасибо.