Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Считать данные из Excel'я

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
maestro_



Joined: 29 Jan 2003
Posts: 95



PostPosted: 06 Sep 2007 13:05    Post subject: Считать данные из Excel'я Reply with quote

Здравствуйте!
Подскажите пожалуйста как в Б4 открыть готовый excel - файл и считать из него значения.
может есть у кого-нибудь примерчик?
Заранее спасибо!
Back to top
View user's profile Send private message
Behemoth



Joined: 15 Mar 2002
Posts: 155
Location: Новиков Алексей Юрьевич
Occupation: ПБОЮЛ
Interests: Пермь

PostPosted: 06 Sep 2007 13:13    Post subject: Reply with quote

Добрый день.
Например.
Code:


#DEFINE nZagCell     1,2
#DEFINE nDateCell    2,1
#DEFINE nControlCol  1
#DEFINE nAdrCol      3
#DEFINE nUslCol      4
#DEFINE nSumCol      10
#DEFINE nLgotCol     12
#DEFINE nPereCol     11

    busy(.t.,'Подключение к Excel')
    TRY
      oApp := CreateObject( "Excel.Application" )
    CATCH
      Alert("Excel не доступен!")
      break
    END
    busy(.f.)
    busy(.t.,'Обработка входного файла')
    try
      oWorkBook:=oApp:WorkBooks:open(OemToAnsi(cFileName),0)
    catch
      alert('Ошибка открытия входного файла. Не удалось открыть файл.')
      if(valtype(oApp)='O',oApp:quit(),nil)
      break
    end
    try
      oWorkSheet:=oWorkBook:worksheets(OemToAnsi('MAIN'))
    catch
      alert('Ошибка открытия входного файла. Не удалось открыть книгу "MAIN"')
      if(valtype(oWorkBook)='O',oWorkBook:close(.f.),nil)
      if(valtype(oApp)='O'     ,oApp:quit(),nil)
      break
    end

// Проверка та ли это ведомость
    cLine:=AnsiToOEM(oWorkSheet:cells(nZagCell):value)
    if !('Ведомость распределения начислений и оплат (по ЖЭУ, домам, услугам, поставщикам с учетом льгот и субсидий)'$cLine)
      sayandwait('Открытая книга не соответствует той, для которой выполнена настройка'+cLF+;
                 'Заголовок должен быть "Ведомость распределения начислений и оплат (по ЖЭУ, домам, услугам, поставщикам с учетом льгот и субсидий)"')
      if(valtype(oWorkBook)='O',oWorkBook:close(.f.),nil)
      if(valtype(oApp)='O'     ,oApp:quit(),nil)
      break
    endif

// Дата формирования проводок
    cLine:=AnsiToOEM(oWorkSheet:cells(nDateCell):value)
    dProvDate:=dEndDayOfMon(if('='$cLine,ctod(strtran(substr(cLine,at('=',cLine)+1,10),'.','/')),date()))

    if(select('tmpfile')>0,tmpfile->(dbclosearea()),nil)
    dbcreate(tempfile(,'dbf'),aTmpStruct,,.t.,'tmpfile')

    nLine:=5
    do while !('Итого:'$AnsiToOEM(oWorkSheet:cells(nLine,nControlCol):value)   ;
             .and. !empty(AnsiToOEM(oWorkSheet:cells(nLine,nControlCol):value)) )
      nSumma:=oWorkSheet:cells(nLine,nSumCol):value
      if(valtype(nSumma)='C', nSumma:=Val(nSumma), nil)
      nLgota:=oWorkSheet:cells(nLine,nLgotCol):value
      if(valtype(nLgota)='C', nLgota:=Val(nLgota), nil)
      nPere :=oWorkSheet:cells(nLine,nPereCol):value
      if(valtype(nPere)='C', nPere:=Val(nPere), nil)

      dispoutat(0,0,'Строка '+str(nLine,4))
      tmpfile->(addrec())
        tmpfile->address:=AnsiToOEM(oWorkSheet:cells(nLine,nAdrCol):value)
        tmpfile->usluga :=AnsiToOEM(oWorkSheet:cells(nLine,nUslCol):value)
        tmpfile->SUMALL  :=nSumma
        tmpfile->SUMLGOT :=nLgota
        tmpfile->SUMPERE :=nPere
      tmpfile->(f_dbunlock())

      nLine++
    enddo

    if(valtype(oWorkBook)='O',oWorkBook:close(.f.),nil)
    if(valtype(oApp)='O'     ,oApp:quit(),nil)

    busy(.f.)

    if tmpfile->(lastrec())=0
      sayandwait('Входной файл не содержит строк данных!')
      break
    endif

_________________
С уважением, Новиков Алексей.
Back to top
View user's profile Send private message Send e-mail
maestro_



Joined: 29 Jan 2003
Posts: 95



PostPosted: 06 Sep 2007 13:15    Post subject: Reply with quote

Спасибо! будем побывать!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru