Гость_Dima |
Отправлено: 11.08.2003, 13:39 |
|
Не зарегистрирован
|
Здравствуйте.
Начал разбираться с работой в excel через OLE и возникла следующая проблема: никак не удается записать данные в ячейки с номаром строки больше 256. Что просто циклом, так и просто по номеру ячейки.
// Исходный код
Variant app, books, book, sheet, cell, range, Exec, sel;
app = CreateOleObject("Excel.Application");
books = app.OlePropertyGet("Workbooks");
books.Exec(Procedure("Add"));
book = books.OlePropertyGet("item",1);
sheet= book.OlePropertyGet("WorkSheets",1);
for (int j=0;jColCount;j++)
{
for (int i=0;i<256;i++) // Если поставить большее число, то вылетает
{
cell = sheet.OlePropertyGet("Cells",i+1,j+1); // вылетает на этой строчке
cell.OlePropertySet("Value", ResultGrid->Cells[j][i].c_str());
}
}
app.OlePropertySet("Visible",2);
Подскажите, пожалуйста как это можно вылечить. |
|
SEDEGOFF |
Отправлено: 11.08.2003, 13:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Столбцов не может быть больше 256 |
|
Гость_Dima |
Отправлено: 11.08.2003, 15:41 |
|
Не зарегистрирован
|
Так в том-то и дело что не получается создать больше 256 строк |
|
SEDEGOFF |
Отправлено: 12.08.2003, 06:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Если ты внимательно посмотришь
cell = sheet.OlePropertyGet("Cells",[B]i+1[B],j+1);
то как раз ты пытаешься обратиться к 257 столбцу
|
|
Guest |
Отправлено: 12.08.2003, 08:46 |
|
Не зарегистрирован
|
>Если ты внимательно посмотришь
>cell = sheet.OlePropertyGet("Cells",[B]i+1[B],j+1);
>то как раз ты пытаешься обратиться к 257 столбцу
j — у меня гарантированно не превышает 20 по условиям задачи
но даже если я пишу строку
cell = sheet.OlePropertyGet("Cells",256+i,j+1);
вылетает на первом шаге
З.Ы. как я понимаю адрессация ячеек идет как [строка][столбец]? |
|
SEDEGOFF |
Отправлено: 12.08.2003, 09:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
А я всегда обращался как столбец->строка (A1) |
|
Гость_Dima |
Отправлено: 12.08.2003, 12:48 |
|
Не зарегистрирован
|
а можешь подсказать как выглядит строка вызова? |
|
Гость_Dima |
Отправлено: 12.08.2003, 13:02 |
|
Не зарегистрирован
|
Спасибо за помощь. Я нашел как эта штука все-таки работает:
cell = sheet.OlePropertyGet("Cells").OlePropertyGet("Item",i+1,j+1); |
|
SEDEGOFF |
Отправлено: 12.08.2003, 13:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
cell = sheet.OlePropertyGet("Range", "H4");//выделяю ячейку, если нужно выделить обрасть то пишу H4:I4
cell.OlePropertyGet("Font").OlePropertySet("Bold",true); // делаю шрифт жирным
String g = "Итого";
cell.OlePropertySet("Value", g.c_str()); //вставляю значение ячейки
А вообще все остальные команда можно посмотреть в HELP к VB |
|