Главная страница
    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.035 c
14-1089637864
dolmat
2004-07-12 17:11
2004.08.01
Подкиньте бухгалтерию


14-1089771722
Думкин
2004-07-14 06:22
2004.08.01
С днем рождения! 14 июля


3-1089189767
astrix
2004-07-07 12:42
2004.08.01
Сохранение в базу


14-1089281302
kaif
2004-07-08 14:08
2004.08.01
Как можно опошлить любую хорошую идею


4-1087542518
Тимохов
2004-06-18 11:08
2004.08.01
CreateRemoteThread





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский