2009-09-25 7 views
0

J'ai une feuille Excel 2003 utilisée par les clients.Les cellules ne sont pas nommées dans les feuilles Excel mais les données des cellules doivent toujours être prises

J'ai besoin de mettre à jour une application Delphi qui extrait des données de ces cellules, mais les cellules ne sont pas nommées du tout, elles sont juste j3 et j55.

Les données des cellules peuvent-elles encore être envoyées à d'autres applications?

L'application Delphi peut-elle prendre ces valeurs?

Répondre

5

Vous pouvez traiter des fichiers Excel via Delphi en utilisant OLE.

uses 
    ComObj; 

procedure TForm3.btn1Click(Sender: TObject); 
var 
    ExcelApp: OleVariant; 
begin  
    try  
     ExcelApp := CreateOleObject('Excel.Application'); 
     if not VarIsEmpty(ExcelApp) then 
     Begin 
     ExcelApp.Workbooks.Open('c:\yourfile.xls'); //Open File 
     ShowMessage(ExcelApp.Range['J55', 'J55'].Value); //Extract value from Cell J55 
     End;  

    finally 

    if not VarIsEmpty(ExcelApp) then 
    begin 
     ExcelApp.DisplayAlerts := False; 
     ExcelApp.Quit; 
    end; 

    end; 

end; 

Au revoir.

+1

Une bonne façon de "déterminer" ce qui est nécessaire est d'enregistrer une macro dans Excel, puis de traduire le code de macro de VBA en Delphi –

-1

Bien sûr, pourquoi pas?

Vous pouvez utiliser le modèle d'objet Excel & utiliser la série de classes pour accéder au contenu de la cellule.

VB exemple

dim xlApp 
set xlApp = CreateObject("Excel.Application") 

dim wkBook 
set wkBook = xlApp.WorkBooks.Add 

dim wkSheet 
set wkSheet = wkBook.Sheets(1) 

dim cell 
set cell = wkSheet.Cells("A1") 'get the reference to cell A1 

msgbox cell.Value 

(script) La meilleure façon d'en apprendre davantage sur le modèle d'objet Excel est
1. Ouvrez Excel
2. Appuyez sur ALT + F11 (éditeur VBA)
3. Appuyez sur F2 (pour le navigateur d'objets) 4. Choisissez
Excel dans le menu déroulant où il montre

la classe racine est une application & alors les choses coulent de là.
par exemple. WorkBook -> WorkSheets -> Worksheet -> Cells (Range) etc.

Espérons que cela aide.

Questions connexes