Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Excel и Windows 2000   Найти похожие ветки 

 
Grain ©   (2006-12-15 06:13) [0]

Добрый день, У меня такая проблем, дело в том, что я написала программу, которая выводит данные в Excel. Писала я на Delphi 7 и у меня стоит Windows XP. Когда я поставила программу на компьютер с Windows 2000, то данные в Excel перестали выводиться. Пробовала открыть его, а потом запустить программу, тогда выводится иногда одна сторока. Для открытия Excel я использую обработчик прерывания try, я так думаю, что на Windows 2000 плохо обрабатываются прерывания или они просто не успевают обрабатываться вообще. У нас еще одна программа, и там такая же проблема с try. Может кто сталкивался с таким, подскажите, что делать? Спасибо.


 
Array ©   (2006-12-15 10:04) [1]

А Вы дебагером проходились по коду, после чего он перестает выводиться, вполне возможно что стоит разная версия экселя


 
Grain ©   (2006-12-15 11:00) [2]

Версия Excel-я одна и та же стоит версия 2003. Отличие лишь в том, что у меня стоит Windows XP, а на той машине Windows 2000.


 
umbra ©   (2006-12-15 11:54) [3]

неплохо бы увидеть, как вы данные в эксель выводите (код)


 
Grain ©   (2006-12-18 05:25) [4]

Вот моя процедура:
procedure TFExcel.BitBtn1Click(Sender: TObject);
var
SH: Variant;
i,j:integer;
begin
 try
  XL:=GetActiveOleObject("Excel.Application");
 except
  XL:=CreateOleObject("Excel.Application");
 end;
 try
  XL.WorkBooks.add;

  sh:=XL.ActiveWorkBook.Sheets[1];
  sh.rows[1].font.color:=clBlack;
  sh.rows[1].font.size:=14;

  XL.Range["a1:a1"].select;
  Xl.selection.HorizontalAlignment:=-4108;
  Xl.selection.VerticalAlignment:=-4108;

  XL.Range["a5:m5"].select;
  Xl.selection.HorizontalAlignment:=-4108;
  Xl.selection.VerticalAlignment:=-4108;

  sh.rows[3].font.color:=clBlack;
  sh.rows[3].font.size:=12;
  sh.rows[4].font.color:=clBlack;
  sh.rows[4].font.size:=12;

  xl.range["a1:m4"].select;
  xl.selection.mergeCells:=true;
  sh.cells[1,1]:="База данных па период с "+datetostr(self.DateTimePicker1.Date)+" по "+datetostr(self.DateTimePicker2.Date);

  sh.rows[5].font.color:=clBlack;
  sh.rows[5].font.size:=10;
  sh.cells[5,1]:="Дата";
  sh.cells[5,2]:="Наименование резидента";
  sh.cells[5,3]:="Счет резидента";
  sh.cells[5,4]:="ИНН резидента";
  sh.cells[5,5]:="Наименование получ./плат.";
  sh.cells[5,6]:="ИНН получ./плат.";
  sh.cells[5,7]:="Наименование банка получ./плат.";
  sh.cells[5,8]:="БИК банка";
  sh.cells[5,9]:="Направление платежа";
  sh.cells[5,10]:="Код валютной операции";
  sh.cells[5,11]:="Паспорт сделки";
  sh.cells[5,12]:="Сумма сделки";
  sh.cells[5,13]:="Код валюты цены";

  i:=6;
  if self.CheckBox1.Checked then
  begin
    DM.TabRez.SetKey;
    DM.TabRez.FieldByName("Date").AsDateTime:=self.DateTimePicker1.Date;
    DM.TabRez.GotoNearest;
    if (DM.TabRez.FieldByName("Date").AsDateTime<=self.DateTimePicker2.DateTime) and
       (DM.TabRez.FieldByName("Date").AsDateTime>=self.DateTimePicker1.DateTime) then
      while ((DM.TabRez.FieldByName("Date").AsDateTime<=self.DateTimePicker2.DateTime) and not(DM.TabRez.Eof)) do
      begin
        sh.rows[i].font.size:=8;
        sh.cells[i,1]:=DM.TabRez.FieldByName("Date").AsString;
        sh.cells[i,2]:=DM.TabRez.FieldByName("namerez").AsString;
        sh.range["c"+inttostr(i)+":c"+inttostr(i)].NumberFormat:="@";
        sh.cells[i,3]:=DM.TabRez.FieldByName("chrez").AsString;
        sh.range["d"+inttostr(i)+":d"+inttostr(i)].NumberFormat:="@";
        sh.cells[i,4]:=DM.TabRez.FieldByName("innrez").AsString;
        sh.cells[i,5]:=DM.TabRez.FieldByName("namepol").AsString;
        sh.range["f"+inttostr(i)+":f"+inttostr(i)].NumberFormat:="@";
        sh.cells[i,6]:=DM.TabRez.FieldByName("innpol").AsString;
        sh.cells[i,7]:=DM.TabRez.FieldByName("nbpol").AsString;
        sh.cells[i,8]:=DM.TabRez.FieldByName("bikbpol").AsString;
        sh.cells[i,9]:=DM.TabRez.FieldByName("nplat").AsString;
        sh.cells[i,10]:=DM.TabRez.FieldByName("kodval").AsString;
        sh.cells[i,11]:=DM.TabRez.FieldByName("ps").AsString;
        sh.range["l"+inttostr(i)+":l"+inttostr(i)].NumberFormat:="# ##0.00";
        sh.cells[i,12]:=DM.TabRez.FieldByName("sum").AsString;
        sh.cells[i,13]:=DM.TabRez.FieldByName("kodcer").AsString;
        DM.TabRez.Next;
        inc(i);
      end;
  end
  else
  begin
    DM.TabRez.First;
    while not(DM.TabRez.Eof) do
    begin
      sh.rows[i].font.size:=8;
      sh.cells[i,1]:=DM.TabRez.FieldByName("Date").AsString;
      sh.cells[i,2]:=DM.TabRez.FieldByName("namerez").AsString;
      sh.range["c"+inttostr(i)+":c"+inttostr(i)].NumberFormat:="@";
      sh.cells[i,3]:=DM.TabRez.FieldByName("chrez").AsString;
      sh.range["d"+inttostr(i)+":d"+inttostr(i)].NumberFormat:="@";
      sh.cells[i,4]:=DM.TabRez.FieldByName("innrez").AsString;
      sh.cells[i,5]:=DM.TabRez.FieldByName("namepol").AsString;
      sh.range["f"+inttostr(i)+":f"+inttostr(i)].NumberFormat:="@";
      sh.cells[i,6]:=DM.TabRez.FieldByName("innpol").AsString;
      sh.cells[i,7]:=DM.TabRez.FieldByName("nbpol").AsString;
      sh.cells[i,8]:=DM.TabRez.FieldByName("bikbpol").AsString;
      sh.cells[i,9]:=DM.TabRez.FieldByName("nplat").AsString;
      sh.cells[i,10]:=DM.TabRez.FieldByName("kodval").AsString;
      sh.cells[i,11]:=DM.TabRez.FieldByName("ps").AsString;
      sh.range["l"+inttostr(i)+":l"+inttostr(i)].NumberFormat:="# ##0.00";
      sh.cells[i,12]:=DM.TabRez.FieldByName("sum").AsString;
      sh.cells[i,13]:=DM.TabRez.FieldByName("kodcer").AsString;
      DM.TabRez.Next;
      inc(i);
    end;
  end;

  j:=i-1;

  sh:=XL.sheets;
  sh.item[1].range["a5:m"+inttostr(j)].borders.linestyle:=1;
  sh.item[1].range["a5:m"+inttostr(j)].borders.colorindex:=1;
  sh.item[1].range["a5:m5"].interior.color:=clSilver;

  XL.Range["a5:a"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["b5:b"+inttostr(j)].select;
  xl.selection.ColumnWidth:=25;
  XL.Range["c5:c"+inttostr(j)].select;
  xl.selection.ColumnWidth:=20;
  XL.Range["d5:d"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["e5:e"+inttostr(j)].select;
  xl.selection.ColumnWidth:=25;
  XL.Range["f5:f"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["g5:g"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["h5:h"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["i5:i"+inttostr(j)].select;
  xl.selection.ColumnWidth:=5;
  XL.Range["j5:j"+inttostr(j)].select;
  xl.selection.ColumnWidth:=10;
  XL.Range["k5:k"+inttostr(j)].select;
  xl.selection.ColumnWidth:=15;
  XL.Range["l5:l"+inttostr(j)].select;
  xl.selection.ColumnWidth:=15;
  XL.Range["m5:m"+inttostr(j)].select;
  xl.selection.ColumnWidth:=15;

  XL.Range["a5:m"+inttostr(j)].select;
  xl.selection.WrapText:=true;

  XL.Range["a1:a1"].select;
  XL.Visible:=true;
 except
 end;
end;


 
Grain ©   (2006-12-18 08:02) [5]

Я нашла ошибку, проблема была вот в этой строке:

sh.range["l"+inttostr(i)+":l"+inttostr(i)].NumberFormat:="# ##0.00";

Дело в том, что когда я пыталась установить формат ячейке на Windows 2000 это почему-то не проходило, а у меня проходило, ошибка вылезла после того как я убрала try. Убрав эту строку у меня все заработало.


 
umbra ©   (2006-12-18 12:46) [6]

это связано с тем, что на сбоящей машине разделителем десятичных разрядов была не точка. Формат числовых ячеек лучше назначать кодом наподобие

sh.range["l"+inttostr(i)+":l"+inttostr(i)].NumberFormatLocal :="# ##0" + DecimalSeparator + "00";



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.055 c
9-1184082923
|<ent
2007-07-10 19:55
2010.08.27
Алгоритм выстрела


15-1266622204
Юрий
2010-02-20 02:30
2010.08.27
С днем рождения ! 20 февраля 2010 суббота


15-1265186248
Mike Kouzmine
2010-02-03 11:37
2010.08.27
Глобальное Затемнение


15-1265871748
KSergey
2010-02-11 10:02
2010.08.27
PHP, веб, пароли, файлы


15-1275228682
MBo
2010-05-30 18:11
2010.08.27
С днем химика!