H>помогите, плиз, примером
H>Как прочесть содержимое ячеек из существующего файла Excel с помощью C++ Builder
H>а то я тут ковыряюсь, да разобраться не могу
не могу сказать, что функция, написанная ниже, оптимальна, но представление как "просто" работать с екселем дает. Писана для жены, которая хотела прочитать данные из екселя не задумываясь как это делать -))
unit UExcelReader;
interface
uses OleServer, ComCtrls,ComObj,Excel97,ActiveX;
function ReadRangeFromExcel
(FileName, //имя файла
ListName:string; // название листа
RangeFrom,RangeTo:string // начальная и конечная
//ячейки например 'A1', 'F19'
):variant; //возвращает массив вариантов
implementation
function ReadRangeFromExcel(FileName,ListName:string;RangeFrom,RangeTo:string):variant;
var
ExcelApplication1: TExcelApplication;
IWorkbook: Excel97.ExcelWorkbook;
ISheet: Excel97.ExcelWorksheet;
IRange: Excel97.Range;
V:variant;
begin
// запускаем ексель
if not Assigned(ExcelApplication1)
then ExcelApplication1 := TExcelApplication.Create(Nil);
//
try
ExcelApplication1.ConnectKind := ckRunningOrNew;
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := False;
// подключаемся к книге
IWorkbook := ExcelApplication1.Workbooks.Add(FileName,0);
ISheet := IWorkbook.Worksheets.Item[ListName] as Excel97.ExcelWorksheet;
IRange := ISheet.Range[RangeFrom,RangeTo];
v := VarArrayCreate([0,0,IRange.Columns.Count-1,IRange.Rows.Count-1],varVariant);
v := IRange.Value;
finally
FreeAndNil(ExcelApplication1);
end;
end;
end.