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

> Внимание!

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

> С++ Builder6 & Excel
18192123
сообщение 4.10.2009 21:10
Сообщение #1


Профи
****

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

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


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

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


Профи
****

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

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


Попыталась переделать на C++ импорт из Excel
Но для некоторых моментов не знаю, что нужно использовать из методов OlePropertyGet/OlePropertySet/OleFuntion/OleProcedure...


bool Xls_To_StringGrid(TStringGrid AGrid,String AXLSFile)
{
const xlCellTypeLastCell = 0x0000000B;
OleVariant Sheet;
Variant XLApp, RangeMatrix;
int x, y, k, r;

//Result := False;
XLApp = CreateOleObject("Excel.Application");
//try
{
XLApp.OlePropertySet("Visible", false);
XLApp.OlePropertyGet("Workbooks").OlePropertyGet("Open", AXLSFile.c_str());
//Sheet = XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
//Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
x = XLApp.OlePropertyGet("ActiveCell").OlePropertyGet("Row");
y = XLApp.OlePropertyGet("ActiveCell").OlePropertyGet("Column");

AGrid.RowCount = x;
AGrid.ColCount = y;

//RangeMatrix = XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
k = 1;
while (k > x)
{
for (r=1;r<=y;r++)
AGrid.Cells[(r - 1)][(k - 1)] = RangeMatrix[k][r];
k++;
}
RangeMatrix = Unassigned;
}
catch(...)
{
ShowMessage("!!!");
}
if (!VarIsEmpty(XLApp)) then
{
XLApp.OlePropertySet("Quit");
XLApp = Unassigned;
Sheet = Unassigned;
return true;
}
else
return false;
}


void __fastcall TFormRegModel::ButClick(TObject *Sender)
{
if (Xls_To_StringGrid(StringGrid1, 'D:\book1.xls'))
ShowMessage('Table has been exported!');
}




Помогите разобраться, пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 19.07.2025 1:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"