Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Delphi+xls   Найти похожие ветки 

 
Vilux   (2004-07-19 11:45) [0]

Использую следующую процедуру для вытаскивания данных из xls-файла, вопрос в том, как мне узнать цвет ячейки, из которой я беру данные? Или ссылку на доки. плиз, если можете...

function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;  
var  
XLApp, Sheet: OLEVariant;  
RangeMatrix: Variant;  
x, y, k, r: Integer;  
begin  
Result := False;  
// Create Excel-OLE Object  
XLApp := CreateOleObject("Excel.Application");  
try
  // Hide Excel  
  XLApp.Visible := False;  

  // Open the Workbook  
  XLApp.Workbooks.Open(AXLSFile);

  // Sheet := XLApp.Workbooks[1].WorkSheets[1];  
  Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];  

  Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;  
  // Get the value of the last row
  x := XLApp.ActiveCell.Row;
  // Get the value of the last column
  y := XLApp.ActiveCell.Column;

  // Set Stringgrid"s row &col dimensions.

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

  // Assign the Variant associated with the WorkSheet to the Delphi Variant

  RangeMatrix := XLApp.Range["A1", XLApp.Cells.Item[X, Y]].Interior;
  //  Define the loop for filling in the TStringGrid
  k := 1;
  repeat
    for r := 1 to y do
      AGrid.Cells[(r - 1), (k - 1)] := inttostr(RangeMatrix[K, R]);
    Inc(k, 1);
    AGrid.RowCount := k + 1;
  until k > x;
  // Unassign the Delphi Variant Matrix
  RangeMatrix := Unassigned;  

finally  
  // Quit Excel  
  if not VarIsEmpty(XLApp) then
  begin  
    // XLApp.DisplayAlerts := False;  
    XLApp.Quit;  
    XLAPP := Unassigned;  
    Sheet := Unassigned;  
    Result := True;  
  end;  
end;
end;


 
Суслик ©   (2004-07-19 11:50) [1]

лучшая дока всегда был сам ексель:
1. начни запись макроса
2. установи цвет ячейки
3. останови запись.
4. по alt+f11 постмотри vb код.

Сделай точно такое же дело в дельфи (только код адапитуруй)

Это унверсальный совет. Можно, конечно, копать msdn на предмет изучения объектной модели екселя - но, поверь, пиведенный мной путь быстрее.


 
Vilux   (2004-07-19 12:14) [2]

ПОпробовал, наешл там только через метод select. Т.е. сначала надо выделить ячейку, потом получить значение цвета, но это долго. Нельзя ли указать координату ячейки и получить цвет?


 
Суслик ©   (2004-07-19 12:21) [3]

все можно.
Select делает selection.

Но вы можете заибть на это - сразу используйте range


 
Vilux   (2004-07-19 12:32) [4]

Я в коде, приведенном выше, допустил ошибку... должно быть
RangeMatrix := XLApp.Range["A1", XLApp.Cells.Item[X, Y]].Value;
Так вот, я не знаю, как сформировать матрицу, чтобы еще цвет присутствовал. Рад бы доки почитать... но где их взять?
И как использовать Range вместе с Select. О действии Range я только догадываюсь по примеру...


 
Суслик ©   (2004-07-19 12:34) [5]


>  Рад бы доки почитать... но где их взять?

заходиет в VBA (alt+f11) в екселе. И читаете. Там описана вся com модель.



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.036 c
1-1090235363
Dysan
2004-07-19 15:09
2004.08.01
хранение данных в стриме


9-1082354536
Sphinx
2004-04-19 10:02
2004.08.01
Заголовки к DX9b


1-1089791332
serg128
2004-07-14 11:48
2004.08.01
Как можно отследить создание файла в определенной директории?


3-1087995153
Ata133
2004-06-23 16:52
2004.08.01
Проверка записи на уникальность


14-1089996598
panov
2004-07-16 20:49
2004.08.01
Блин, флудеров развелось.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский