Показать сообщение отдельно
  #10  
Старый 01.03.2008, 14:00
Max7 Max7 вне форума
Прохожий
 
Регистрация: 29.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

Здесь перебираем все листы в книге. Заходим на каждый лист и выбираем оттуда данные:

//кусок из какой-то проги:


procedure TfrmMsg.GetFromEXCEL(Sender: TObject);
var
Title: string;
i: integer;
begin
Start := 1;


//
// ExcelApp.WorkBooks[Book].Activate;
// перебираем все листки :
for i := Start to ExcelApp.WorkBooks[Book].Sheets.Count do
begin
Title:= ExcelApp.WorkBooks[Book].Sheets[i].Name;
if Title = 'New' then Continue; // пропустить бланк-шаблон
GetTable(Book, i); // <<--------------------------------- Вот ТУТ
StaticText1.Caption := Format('Records : %8d List "'+ Title+'"', [Cont]);
StaticText1.Refresh;
Application.ProcessMessages;
end;
// Закр. EXCEL:
Escape(Sender);
end;



function TfrmMsg.GetTable(Book, Index: integer): boolean;
var
Sht: OleVariant;
V: TZwit;
MaxCNT: integer; // наибольшее кол-во строк в листе
DD: string;
ZLC, FP, K: string[15];
Adv: string[5];
r, c: integer;
FPd, Kurs: Double;

begin
Result:= false;
Kurs:= 0;
Cont:= 0;
DecimalSeparator:= '.';
Sht:= ExcelApp.WorkBooks[Book].Sheets[Index];
V.Title:= Sht.Name;
V.Zwit:= Index;
MaxCNT:= GetMaxRows;
// Перебираем все строчки:
for r := 2 to MaxCNT do
begin
DD:= Trim(Sht.Cells[r, 1]); // Дата
ZLC:= Trim(Sht.Cells[r, 2]); // название
FP:= Trim(StringReplace(Sht.Cells[r, 5], ',', '.', [rfReplaceAll])); // тут должна быть сумма
Val(FP, FPd, c);
// Теперь проверим наличие данных:
if (AnsiUpperCase(DD) <> 'ДАТА') and
(AnsiUpperCase(DD) <> 'ВСЬОГО:') and
(ZLC <> '') and
(FP <> '') and
(c = 0) and ( Sht.Cells[r, 1].Interior.Color = $FFFFFF )
then
begin
// Читаємо их из строчки:
//
// Дата:
if Length(DD)>2 then
try
V.ZDate:= StrToDate(DD);
except
// Sht.Cells[r, 1].Interior.Color := RGB(223, 123, 123);
if Pos(' ', DD) = 3 then DD:= StringReplace(DD, ' ', '.', [rfReplaceAll]);
ExcelApp.Visible:= false;
if InputQuery('Исправь дату', 'Листок "' +V.Title+'" строчка ' +IntToStr(r) +#10#13+
ErrStr+'дату "'+DD+'" ['+IntToStr(c)+']', DD)
then V.ZDate:= StrToDate(DD)
else V.ZDate:= StrToDate('09.07.2005');
end;
// Название ZLC :
V.ZLC:= ZLC;
// Цена:
V.Price:= ConvertStrToNumber(3, '"Price"');
// Скидка:
V.Bonus:= ConvertStrToNumber(4, '"Bonus"');
// К оплате:
V.ForPay:= FPd;
// UAH :
V.UAH:= ConvertStrToNumber(6, '"UAH"');
// USD :
V.USD:= ConvertStrToNumber(7, '"USD"');
// EUR :
V.EUR:= ConvertStrToNumber(8, '"EUR"');
// kUSD :
V.kUSD:= ConvertStrToNumber(9, '"kUSD" ');
// kEUR :
V.kEUR:= ConvertStrToNumber(10, '"kUAH"');
// Долг :
V.Debt:= ConvertStrToNumber(11, '"ДОЛГ"');
// Note :
V.Note:= Trim(Sht.Cells[r, 12]);

(* Sht.Cells[r, 2].Interior.Color := RGB(223, 123, 123);
ExcelApp.Visible:= true;
ShowMessage('"'+V.Title+'" Line '+IntToStr(r)+#10#13+ErrStr+'"OID" "'+V.ZLC+'" ['+IntToStr(c)+']'); *)
//
// Внести в базу :
Result:= SetToDataBase(V);
if Result then Inc(Cont); // счетчик записей
Application.ProcessMessages;
end;
end;
end;


И еще всякое:
ExcelApp.Workbooks.Add(xlWBatWorkSheet); // Add a new Workbook,
ExcelApp.Workbooks.Open('c:\YourFileName.xls'); // Open a Workbook,
ExcelApp.ActiveSheet.Name := 'This is Sheet 1'; // Rename the active Sheet
ExcelApp.Workbooks[1].WorkSheets[1].Name := 'This is Sheet 1'; // Rename
ExcelApp.Cells[1, 1].Value := 'SwissDelphiCenter.ch'; // Insert some Text in some Cells[Row,Col]
ExcelApp.Cells[2, 1].Value := 'http://www.swissdelphicenter.ch';
ExcelApp.Cells[3, 1].Value := FormatDateTime('dd-mmm-yyyy', Now);
ExcelApp.Range['A2', 'D2'].Value := VarArrayOf([1, 10, 100, 1000]); // Setting a row of data with one call
ExcelApp.Range['A11', 'A11'].Formula := '=Sum(A1:A10)'; // Setting a formula
ExcelApp.Cells[2, 1].HorizontalAlignment := xlRight; // Change Cell Alignement
//Можно ещё и так изменить цвет диапазона ячеек
ExcelApp.Range['B2', 'C6'].Interior.Color := RGB(223, 123, 123);
// Change the Column Width:
ColumnRange := ExcelApp.Workbooks[1].WorkSheets[1].Columns;
ColumnRange.Columns[1].ColumnWidth := 20;
ColumnRange.Columns[2].ColumnWidth := 40;
// Change Rowheight
ExcelApp.Rows[1].RowHeight := 15.75;
// Merge cells:
ExcelApp.Range['B33'].Mergecells := True;
// Apply borders to cells:
ExcelApp.Range['A14:M14'].Borders.Weight := xlThick; // Think line/ Dicke Linie
ExcelApp.Range['A14:M14'].Borders.Weight := xlThin; // Thin line Dunne Linie
// Set Bold Font in cells:
ExcelApp.Range['B16:M26'].Font.Bold := True;
// Set Font Size:
ExcelApp.Range['B16:M26'].Font.Size := 12;
//right-aligned Text:
ExcelApp.Cells[9, 6].HorizontalAlignment := xlRight;
// horizontal-aligned text:
ExcelApp.Range['B14:M26'].HorizontalAlignment := xlHAlignCenter;
// left-aligned Text:
ExcelApp.Range['B14:M26'].VerticalAlignment := xlVAlignCenter;
(* Page Setup *)
ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;
// Left, Right Margin (Seitenrander)
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 35;
ExcelApp.ActiveSheet.PageSetup.RightMargin := -15;
// Set Footer Margin
ExcelApp.ActiveSheet.PageSetup.FooterMargin := ExcelApp.InchesToPoints(0);
// Fit to X page(s) wide by Y tall
ExcelApp.ActiveSheet.PageSetup.FitToPagesWide := 1; // Y
ExcelApp.ActiveSheet.PageSetup.FitToPagesTall := 3; // Y
// Zoom
ExcelApp.ActiveSheet.PageSetup.Zoom := 95;
// Set Paper Size:
ExcelApp.PageSetup.PaperSize := xlPaperA4;
// Show/Hide Gridlines:
ExcelApp.ActiveWindow.DisplayGridlines := False;
// Set Black & White
ExcelApp.ActiveSheet.PageSetup.BlackAndWhite := False;
// footers
ExcelApp.ActiveSheet.PageSetup.RightFooter := 'Right Footer' ;
ExcelApp.ActiveSheet.PageSetup.LeftFooter := 'Left Footer' ;
// Show Excel Version:
ShowMessage(Format('Excel Version %s: ', [ExcelApp.Version]));
// Show Excel:
ExcelApp.Visible := True;
// Save the Workbook
ExcelApp.SaveAs('c:\filename.xls');
// Save the active Workbook:
ExcelApp.ActiveWorkBook.SaveAs('c:\filename.xls');
// Поворачивать слова, писать вертикально, под углом и т.д.:
XL.WorkBooks[1].WorkSheets[1].Rows[2].Orientation := 90;
XL.WorkBooks[1].WorkSheets[1].Range['A2:B2'].Orientation := 0;
//подогнать ширину столбцов по содержимому:
WorkBook.WorkSheets[1].Columns.Item[i].Autofit;
}
Ответить с цитированием