![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюки при экспорте в Excel [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Дмитрий Иванов © (2002-08-25 03:28:00)Вот так делаю экспорт:
procedure TAlphForm.Export(Sender: TObject);
var FIXLSApp:IxlApplication;IWorkbook:IxlWorkbook;Iworksheet:IxlWorksheet;
xlDDE: TxlDDEClient;i: integer;IR1, IR2, IRange: IxlRange;Buff,FileName: string;
begin
...
FIXLSApp := CreateComObject(Excel8TLB.CLASS_Application_) as Excel8TLB._Application;
FIXLSApp.Application_.EnableEvents:=False; IWorkbook := FIXLSApp.Workbooks.Add(ExtractFilePath(ParamStr(0)) + "data\1.xls", LOCALE_USER_DEFAULT);
Iworksheet:=IWorkbook.Worksheets.Item["InformUnion"] as Excel8TLB._worksheet;
try
xlDDE := TxlDDEClient.Create(Self);
if xlDDE.SetLink("EXCEL", IworkSheet.Name) then
begin
Buff:="";
j:=0;
for i := Low(Mas) to High(Mas) do
begin
//Buff := "Название предприятия"+#9+"Адрес"+#9+"Телефон"+#9+"Факс"+#9+"E-mail"+#9+"URL"+#9+#10;
Buff := Buff + Mas[i].Name+#9+Mas[i].Adress+#9+Mas[i].Tel+#9+Mas[i].Fax+#9+Mas[i].Email+#9+Mas[i].URL+#9+#10;
IDispatch(IR1) := IworkSheet.Cells.Item[2, 1];//левая верхняя ячейка области
IDispatch(IR2) := IworkSheet.Cells.Item[High(Mas)+2,6];//правая нижняя ячейка области
IRange := IworkSheet.Range[IR1, IR2];
xlDDE.xlPokeData(OLEVariant(IRange).Address[ReferenceStyle:=xlR1C1],PChar(Buff));
finally
xlDDE.CloseLink;
xlDDE.Free;
end;//try
IWorkbook.SaveAs(FileName,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlExclusive,
EmptyParam, false, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);
FIXLSApp.Quit;
finally
Iworksheet:=nil;IworkBook:=nil;FIXLSApp:=nil;
end;//try
end;
Глюк: некоторые номера телефонов и факсов, неправильно отображены в xls файле. Например, был телефон 4-24-80, после экспорта стал 4/24/1980,а похожий 4-54-56 экспортируется как 4-54-56.
Как лечить я знаю, меня интересует: почему одни телефоны нормально экспортируются, а другие нет?
Дмитрий Иванов (2002-08-25 03:32:00) [1]Неужели Excel думает, что это дата? и потом сам переводит в формат дыты?...