Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 18:22   #1
vasilisk-green
Пользователь
 
Аватар для vasilisk-green
 
Регистрация: 14.11.2009
Сообщений: 21
По умолчанию Excel-файлы & Ms Visual C++

Возникла необходимость организовать ввод данных из файлов Excel, их обработку, ну и, естественно, вывод в файл (тоже Excel). С обработкой я разберусь, а вот ввод-вывод - проблема. Я в первый раз )))
Заранее спасибо.
vasilisk-green вне форума Ответить с цитированием
Старый 15.07.2010, 18:25   #2
(C)stalin(Cpp)
Пользователь
 
Аватар для (C)stalin(Cpp)
 
Регистрация: 04.10.2008
Сообщений: 47
По умолчанию

Создаеш любой txt файл...записываеш туда данные через табуляцию, тоесть "12 кк 3314 ааа ..." потом мож этот файл открывать в Excel и все будет оки-оки!
функция_пахан(1000000$)
{ чисто_в_натуре_написать("хеллоу мир");
вернуть_в_налоговую(0$); }
(C)stalin(Cpp) вне форума Ответить с цитированием
Старый 16.07.2010, 15:04   #3
vasilisk-green
Пользователь
 
Аватар для vasilisk-green
 
Регистрация: 14.11.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от (C)stalin(Cpp) Посмотреть сообщение
Создаеш любой txt файл...записываеш туда данные ...
Спасибо! Только вот не понятно: ежели у меня уже есть *.xls, созданный непосредственно в Excel, как мне его прочесть-то?
vasilisk-green вне форума Ответить с цитированием
Старый 16.07.2010, 16:36   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vasilisk-green
ежели у меня уже есть *.xls, созданный непосредственно в Excel, как мне его прочесть-то?
vasilisk-green, либо открывать через OLE автоматизацию (для этого Excel нужной версии должен быть на той машине, где Вы попытаетесь прочитать данные),

либо использовать компоненты прямого доступа к содержимому Excel файлов.
Их много. К сожалению, рабочий и бесплатный мне удалось откопать только один - MyXLS
но он очень капризен к содержимому - даты возвращает как число (ну это ещё терпимо), а вот формулы/значения вычислений вообще не видит

я про подобный компонент спрашивал здесь\
посмотрите ответ. Может быть, Вам подойдёт этот вариант.

Хотя, если требование наличия установленного Excel на компьютере допустимо,
очень рекомендую читать содержимое файлов через сам Excel (через OLE)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.07.2010, 16:11   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Во вложениях
NativeExcel для 2003
NativeExcel2005 для 2005,2008
nativeexcelnet файл справки с примерами.
Условно бесплатная.При чтении файлов работает нормально.Работает без установленного Excel.
При сохранении и записи файлов в ячейке А1 запись-программа не зарегистрирована.Использую для доступа к файлам и чтения информации.
Только файлы .xls,с 2007 не работает.Скорость получения информации намного выше,чем через OLE
Вложения
Тип файла: rar NativeExcel.rar (142.9 Кб, 113 просмотров)
Тип файла: rar NativeExcel2005.rar (149.6 Кб, 89 просмотров)
Тип файла: rar nativeexcelnet.rar (405.3 Кб, 116 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.07.2010, 11:16   #6
vasilisk-green
Пользователь
 
Аватар для vasilisk-green
 
Регистрация: 14.11.2009
Сообщений: 21
Стрелка

Большое спасибо. Использовал OleDbConnection и OleDbDataAdapter примерно таким образом:

Код:
OleDbConnection ^Odc;	// OLE-подключение
OleDbDataAdapter ^Odda;	// адаптер данных OLE				
String ^Str = gcnew String("");
Odc = gcnew OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;"
					"data source=" + FilName + ";Extended Properties=Excel 8.0;");
Odda = gcnew OleDbDataAdapter("select * from [" + name(FilName) + "$]", Odc);
Fdata_set = gcnew DataSet();
try
{
	Odc->Open();	// открытие подключения к базе данных
	Odda->Fill(Fdata_set);	// заливка данных
} // try
finally
{
	Odc->Close();	// закрытие подключения
} // finally
Инфу нашел в Msdn. Только вот возникло два новых вопроса:
1) В источнике информации содержится только тема про импорт данных. Насчет вывода - NULL. Я писал выходной файл через '\t' и '\n', но это не очень "зажигает"; как составить текст запроса на вывод информации?
2) В переменной Fdata_set (класса System::Data::DataSet) есть всё, что хотелось бы (в соответствии с запросом), кроме первой строки указанного листа, а она, что называется, немножко нужна. Если не очень сложно, в чем я ошибся? (В выборе способа?)

Последний раз редактировалось vasilisk-green; 20.07.2010 в 11:18.
vasilisk-green вне форума Ответить с цитированием
Старый 02.04.2011, 18:01   #7
Ирина Сергеевна
Пользователь
 
Регистрация: 20.05.2009
Сообщений: 17
Радость

Выводить можно через точку с запятой в csv-файл (его Excel без труда откроет).
The impossible is possible, if you really want..
Ирина Сергеевна вне форума Ответить с цитированием
Старый 03.04.2011, 22:35   #8
vasilisk-green
Пользователь
 
Аватар для vasilisk-green
 
Регистрация: 14.11.2009
Сообщений: 21
Стрелка Спс

Спасибо за совет, обязательно учту. Правда все решается гораздо элегантнее с помощью NativeExcel, спасибо doober.
vasilisk-green вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi & MS Excel Ntlegend Общие вопросы Delphi 3 25.04.2010 05:20
EXCEL&DELPHI Wi1D БД в Delphi 1 10.07.2009 08:01
VC++ файлы & битмассивы ("")(Э_Є)("") Общие вопросы C/C++ 1 16.06.2009 14:08
Delphi & Excel Rust25 Общие вопросы Delphi 2 05.09.2008 06:35
PHP & Excel LeoN PHP 2 02.09.2008 13:37