Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странности при импорте из Excel [D7, WinXP]


Альф ©   (2008-07-30 23:59:00) 

Столкнулся тут со странным поведением Excel.

Суть вот в чём.
Из филиалов присылают отчёты в xls-файле, в которм две страницы "Расчёт" и "Результат". Сам файл заполняется операторами на основании моего шаблона.
Импортирую страницу "Результат" - но судя по тем данным что считываются - считывается страница "Расчёт", пробовал обращаться по имени "Лист2" и "Лист1" - результат тот же, страница "Расчёт".

Причем такое поведение только на трети файлов, остальные импортируются нормально.

Сталкивался ли кто с таким, если да то как решилась проблема ?


Альф   (2008-08-02 09:59:00) [1]


> Cobalt   (02.08.08 09:04) [6]
> Интересно, а в тех филиалах версии Excel'я такая же как у вас?


Да - по всему предприятию на юзерских машинах стоит одинаковая версия Office и Windows.

Проблема решилась.
Отослал на этот филиал новый шаблон и эти же люди набрали по новой эти же данные, теперь всё импортируется как должно.
Думаю проблема была в том - что каким то /таинственным/ образом была нарушена структура xls-файла, а операторы часть файлов заполнили, используя не мой шаблон, а просто скопировав поврежденный файл.


Cobalt   (2008-08-02 09:04:00) [2]

Интересно, а в тех филиалах версии Excel'я такая же как у вас?


MultIfleX   (2008-07-31 09:07:00) [3]

еще сть вариант с Excel.ActiveSheet := ..


MultIfleX   (2008-07-31 09:06:00) [4]


>   FExcel.OpenSheet(CSheetName);

а может Sheets("Sheet1").Select ?


Альф   (2008-07-31 08:52:00) [5]

Кусок кода:

 FExcel := TExcel.Create();
 FExcel.Open();

 Screen.Cursor := crAppStart;
 try
   abuf := VarArrayCreate([RANGE_a1, RANGE_z1, RANGE_a2, RANGE_z2], varVariant);

   for i := 0 to lvwFiles.Items.Count -1 do begin
     StatusBar.SimpleText := Format(' %d / %d  %s', [i + 1, lvwFiles.Items.Count, lvwFiles.Items[i].Caption]); ;
     Application.ProcessMessages();

     path := FImportFolder + lvwFiles.Items[i].Caption;
     FExcel.OpenBook(path);
     FExcel.OpenSheet(CSheetName);

     abuf := FExcel.Sheet.Range[RANGE_Name].Value;
...........
     тут дальнейшая обработка массива


Вкл/выкл программы на результаты не влияет.
Думаю проблема именно в Excel. Из более двух десятков филиалов такое только в одном, и то не во всех отчётах. Причем визуально проблемный файл выглядит как правильный. Пробовал переименовывать имя листа - не помогает, всё равно данные считываются с другого.


MultIfleX   (2008-07-31 07:00:00) [6]

Кусок кода импорта в студию, посмотрим, подскажем. В устном диалекте это непередаваемо.


KilkennyCat   (2008-07-31 00:56:00) [7]

Много лишнего, мало сути. А вот если выключить-включить программу, что считается?


Наверх

Титульная страница Поиск, карта сайта Написать письмо