IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> С++ Builder6 & Excel
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здравствуйте!

Подскажите пожалуйста, можно ли содержимое компонента-таблицы StringGrid экспортировать в документ Excel?
Если да, то как это делается?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Не-не-не... smile.gif Билдер - это тебе не Дельфи, тут вся работа происходит через OlePropertyGet/OlePropertySet/OleFuntion/OleProcedure... Вот так работает экспорт в Excel:
bool SaveAsExcelFile(TStringGrid *AGrid, AnsiString ASheetName, AnsiString AFileName)
{
const int xlWBATWorksheet = -4167;

int bounds[4] = {0, AGrid->RowCount, 0 , AGrid->ColCount };
Variant Array = VarArrayCreate(bounds, 3, varVariant);
for(int i = 0; i < AGrid->RowCount; i++)
{
for(int j = 0; j< AGrid->ColCount; j++)
{
Array.PutElement(AGrid->Cells[j][i], i, j );
}
}

Variant XLApp = CreateOleObject("Excel.Application");
try
{
// Hide Excel
XLApp.OlePropertySet("Visible", false);
// Add new Workbook
XLApp.OlePropertyGet("WorkBooks").OleFunction("Add", xlWBATWorksheet);

Variant Sheet =
XLApp.OlePropertyGet("Workbooks").OlePropertyGet("Item", 1).
OlePropertyGet("Worksheets").OlePropertyGet("Item", 1);

Sheet.OlePropertySet("Name", ASheetName.c_str());

Variant Cell1 = Sheet.OlePropertyGet("Cells", 1, 1);
Variant Cell2 = Sheet.OlePropertyGet("Cells", AGrid->RowCount + 1, AGrid->ColCount + 1);

Variant fRange = Sheet.OlePropertyGet("Range", Cell1, Cell2);
fRange.OlePropertySet("Value", Array);

XLApp.OlePropertySet("DisplayAlerts",false);
XLApp.OlePropertyGet("Workbooks").OlePropertyGet("Item", 1).OleProcedure("SaveAs", AFileName.c_str());
XLApp.OleProcedure("Quit");
}
catch(...)
{
//
ShowMessage("Экспорт данных - Ошибка !!!");
}
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Вызывать - так:
SaveAsExcelFile(sgTable, "test", "F:\\aga.xls");
}
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.06.2024 16:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name