Ano ang pangalan ng program para sa excel sa 1c. Alin ang mas mahusay - 1C o Excel? Mag-upload nang walang programming

Mayroong iba't ibang mga paraan upang buksan ang isang Excel file sa 1C at vice versa. Mas gugustuhin ng mga baguhan na user ang mga simpleng operasyon sa pamamagitan ng pag-save ng dokumento sa ibang format o paggamit ng mga espesyal na programa. Ngunit ito ay nagkakahalaga ng paggastos ng kaunting pagsisikap at pag-aaral kung paano gumana sa mga tool ng software upang tingnan at iproseso ang data mula sa isang programa patungo sa isa pa. Ang mga pangunahing kasanayan sa programming ay makakatulong sa iyo na maiwasan ang mga nakagawiang gawain sa hinaharap.

Paano buksan ang mga dokumento ng Excel sa 1C at vice versa

Ang Microsoft Excel spreadsheet editor ay superyor sa functionality kaysa sa 1C accounting software na mga produkto. Samakatuwid, mas gusto ng mga user ng 1C na magsagawa ng ilang mga operasyon sa isang editor ng spreadsheet, at pagkatapos ay ibalik ang data sa programa ng accounting. At ito ay hindi nakakagulat, dahil dati ang accounting ng maraming mga kumpanya ay isinasagawa ng eksklusibo gamit ang mga programa ng Microsoft. Ngunit sa kasalukuyang antas ng automation ng mga proseso ng negosyo ng mga negosyo, imposibleng iwanan ang mga dalubhasang programa. Upang magtatag ng pakikipag-ugnayan sa pagitan ng iba't ibang mga application, mayroong mga sumusunod na simpleng paraan:

    Kapag kailangan mong harapin ang mga file ng mga produkto ng software na hindi naka-install sa iyong kasalukuyang computer, ang pinakamadaling paraan ay ang paggamit ng isang espesyal na application para sa pag-convert ng mga talahanayan ng Excel sa 1C na format at vice versa. Matatagpuan ito sa website ng produkto ng 1C.

    Kung ang iyong computer ay may parehong 1C at Excel, maaari mong manu-manong buksan ang file sa "katutubong" application nito at pagkatapos ay i-save ito sa format ng isa pang program. Karaniwang available ang opsyong ito kapag nagse-save ng napi-print o layout.

    Maaaring mag-upgrade ang mga user ng 1C 7.7 sa bersyon 1C 8, na mayroong pinahusay na editor ng talahanayan.

Paano maaaring makipag-ugnayan ang 1C at Excel sa programmatically

Ang pakikipag-ugnayan sa pagitan ng 1C at Excel ay maaaring isagawa sa antas ng programa gamit ang teknolohiyang OLE Automation na binuo ng Microsoft. Pinapayagan ka nitong ma-access ang mga bagay ng COM nang direkta mula sa mga script interpreter ng iba't ibang mga programa. Sa madaling salita, pinapayagan ka ng OLE na ilipat ang isang piraso ng trabaho mula sa isang programa patungo sa isa pa, at pagkatapos ay ibalik ang gawain sa orihinal na aplikasyon. Ito mismo ang kailangan ng mga accountant mula sa spreadsheet editor ng Microsoft.

Hindi mo kailangang maging isang programmer upang magamit ang mga tool ng OLE. Kahit na ang unang kakilala sa mga linya ng code ay sasamahan ng mga error, ang pagsuri ay makakatulong upang makilala ang mga ito, at ang karanasang natamo ay makakatulong upang maiwasan ang mga ito sa hinaharap. Nasa ibaba ang pinakasikat na mga utos (tinatawag silang mga listahan) para sa pagtatrabaho sa data ng Excel sa mga programa sa accounting at vice versa.

Paano magbukas ng isang Excel file sa 1C sa programmatically

Kaya, kung ang parehong mga programa ay naka-install sa iyong computer, kung saan nais mong makipagpalitan ng data, pagkatapos ay maaari mong ayusin ang pakikipag-ugnayan sa programmatically. Upang gawin ito, kailangan mong ilunsad ang parehong mga application, at pagkatapos ay gamitin ang OLE upang magtatag ng access mula 1C hanggang Excel:

  • Exception

    Report(ErrorDescription() + "Hindi naka-install ang Excel sa computer na ito!");

  • Katapusan ng Pagtatangka.

Naka-install ang access sa editor ng talahanayan, gamit na ngayon ang mga sumusunod na command na kailangan mo para makakuha ng access sa:

    tiyak na dokumento:

    • Aklat = Excel.WorkBooks.Open(FilePath)

    • Sheet = Book.WorkSheets(SheetNumber);

  • kasama ang isang partikular na numero ng sheet:

    kasama ang may partikular na pangalan ng sheet:

    • Sheet = Book.WorkSheets(SheetName);

    • Value = Sheet.Cells(RowNumber, ColumnNumber).Value;

Upang basahin ang data mula sa unang pahina ng isang file, gamitin ang mga sumusunod na listahan:

    Excel = CreateObject("Excel.Application");

    Aklat = Excel.WorkBooks.Open(FilePath);

    Sheet = Book.WorkSheets(1);

    TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;

    TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;

    Para sa Row = 1 By TotalRows Loop

    • Para sa Column = 1 By TotalColumns Cycle

      Value = Abbr(Sheet.Cells(Row,Column).Value);

      EndCycle;

    EndCycle;

Tandaan, ang path sa file ay dapat na tinukoy nang buo. Kapag nagse-save ng pangalan ng dokumento, hindi mo maaaring isama ang mga character tulad ng \, /, :, *, ?, ", >,< и |.

Paano magbukas ng 1C file sa pamamagitan ng Excel sa pamamagitan ng programmatically

Upang maitala ang data sa Excel kailangan mong:

    o magbukas ng kasalukuyang dokumento:

    • Book = Excel.WorkBooks.Open(Path to File) - sa pamamagitan ng pagkakatulad sa pagbabasa ng Excel file mula sa 1C;

    o magdagdag ng bago:

    • Workbook = Excel.WorkBooks.Add();

    Maaari kang lumikha ng bagong sheet sa isang bagong dokumento:

    • Sheet = Book.Sheets.Add();

    at magdagdag ng bagong halaga sa cell:

    • Sheet.Cells(RowNumber, ColumnNumber).Value = Value; (Ang mga pamamaraan para sa pagsulat ng mga halaga gamit ang OLE ay inilarawan nang detalyado sa Internet).

  • Book.SaveAs(FilePath);

    Exception

    Report(ErrorDescription()+"File not save!");

    Katapusan ng Pagtatangka.

Kapag tapos ka nang magtrabaho kasama ang spreadsheet editor, lumabas gamit ang espesyal na command (Excel.Application.Quit();). Ang pamamaraang ito ay makakatulong sa pag-save ng mga mapagkukunan ng computer sa panahon ng karagdagang trabaho.

Mga panganib kapag nagpapalitan ng data sa pagitan ng 1C at Excel

Ang 1C at Excel ay binuo ng iba't ibang kumpanya at gumagamit ng iba't ibang paraan ng paghawak ng data. Samakatuwid, kapag naglilipat ng mga talahanayan mula sa isang programa patungo sa isa pa, tandaan ang mga sumusunod na pitfalls:

    Iba't ibang mga separator sa mga fractional na numero. Pinaghihiwalay ng Microsoft ang mga decimal na numero gamit ang kuwit. Samakatuwid, kapag naglilipat ng mga talahanayan mula sa isang programa ng accounting, huwag magulat sa kasaganaan ng mga petsa at iba pang pagkalito. Sa isang accounting program lang, maaaring gumamit ng tuldok sa pagsulat ng mga fraction, na bibigyang-kahulugan ng Microsoft spreadsheet editor bilang isang separator ng petsa, at ang 15.5 ay magiging ika-15 ng Mayo. Upang iproseso ang data ng accounting sa isang spreadsheet editor, ang separator ay kailangang palitan ng kuwit.

    Kapag naglilipat ng data mula sa Excel patungo sa 1C, ang mga Excel constant na iyon na wala sa accounting program ay maaaring hindi maipakita nang tama. Upang matukoy ang mga ito, kailangan mong pumunta sa Tulong sa editor ng spreadsheet o sa mode ng pag-debug at suriin ang numerical expression ng iba't ibang mga constant.

Kung kailangan mong makipagpalitan ng malaking halaga ng data o hindi maalis ang mga error, makipag-ugnayan sa mga propesyonal ng kumpanya ng Setby para sa tulong. Tutulungan ka naming malutas ang iyong mga problema sa antas ng programa at maunawaan ang mga utos na kinakailangan para sa iyong trabaho.

Kadalasan, kapag nakikipag-usap sa mga potensyal na kliyente, naririnig ko na ang pag-andar ng talahanayan mula sa pakete ng opisina ay sapat na para sa kanila, at hindi nila nakikita ang punto sa mga programang 1C. Ito ay dahil ang ilang mga tao ay iniuugnay pa rin ang solusyon na ito sa mga programa para sa mga accountant, na hindi totoo.

Ang Excel ay isang unibersal at mass-produced na produkto, hindi ka maaaring makipagtalo diyan. Halos lahat ay maaaring gumamit ng program na ito, hindi katulad ng 1C developments, na naglalayong makitid na mga espesyalista. Gamit ang "berde" na mga talahanayan, maaari mong malayang ipatupad ang kinakailangang pag-andar, na magiging maginhawa: narito ang modelo ng pananalapi ng samahan kasama ang lahat ng mga pag-aayos sa isa't isa, accounting ng pamamahala, kahit na mga regulated, isang malaking seleksyon ng visualization ng data, ang kakayahang mag-isa. palawakin ang mga kakayahan ng programa gamit ang iba't ibang mga add-on - lahat ay nasa iyong mga kamay, lahat mula sa simula...

Mabuti kung nagsisimula ka pa lang sa iyong negosyo, unti-unting isinasaalang-alang ang kinakailangang data sa talahanayan sa mga relasyon sa mga kliyente, mga supplier, mga awtoridad sa regulasyon, pagbuo ng iyong sariling di-makatwirang istraktura, ngunit kung ano ang susunod na gagawin kapag ang database ay naging napakalaki at ang mga numero ng kawani sa dose-dosenang? Magbibilang pa rin ayon sa sarili mong mga parameter? Hindi ako nalilito sa kaginhawahan sa ugali, na kadalasang nakakasagabal sa systematization ng negosyo, at, dahil dito, ang pag-optimize nito.

Para sa kalinawan, isipin natin kung anong mga pangangailangan ang maaaring lumitaw para sa automation ng accounting, halimbawa, para sa kalakalan:

1. Pagsusuri ng mga benta sa loob ng isang tiyak na panahon.

Maaaring suriin ng pinuno ng departamento ng pagbebenta ang data ng mga benta. Mahalaga para sa kanya na maunawaan kung ang plano ay ipinatupad, kung gaano kabisa ang kanyang mga diskarte, upang kung sakaling hindi epektibo, maaari siyang gumawa ng napapanahong mga pagsasaayos sa trabaho.

2. Warehouse accounting.
Kailangan ko bang ipaliwanag na para sa mga benta, mahalaga din na maunawaan ang pagkakaroon ng mga kalakal sa stock, kung aling mga kalakal ang maaaring ireserba at kung alin ang wala sa stock at kung ano ang kailangang i-order? Sa tingin ko malinaw na ang lahat dito.

3. Pagpapanatili ng database ng mga katapat.
Kahit na ang may-ari ay nagbebenta lamang ng kung ano ang mabibili dito at ngayon, na karaniwan para sa sektor ng B2C, kung gayon mayroon siyang bahagyang naiibang relasyon sa base ng tagapagtustos - mga kontrata, pangunahin... Isipin kung gaano kaginhawa ito kapag ang lahat ay konektado sa ang supplier ay awtomatikong ipinapakita ba ito sa isang solong database? Ang manager na namamahala sa bodega ay agad na nakikita ang pagkakaroon ng mga kalakal sa bodega, ang isa pang empleyado na responsable para sa mga dokumento ay sinusubaybayan ang impormasyon sa kanilang kakayahang magamit, kung ang lahat ng mga obligasyon sa ilalim ng mga relasyon sa kontraktwal ay natutupad, kung sino ang may utang kanino at kung magkano. At sa kaso ng mga pagkakaiba, maaari mong i-reconcile ang data para sa isang tiyak na panahon, na bumubuo ng isang resulta sa mas mababa sa isang minuto.

4. Kita ng organisasyon.
Ang pagbuo ng ulat ng kita ay hindi magiging mahirap, dahil ang lahat ng data sa mga gastos at kita ay nasa database na. Sa kondisyon na ang impormasyon ay ipinasok sa isang napapanahong paraan, hindi bababa sa kinakailangang petsa. Ang pangunahing kadahilanan dito ay ang personal na responsibilidad ng gumagamit.

Kung wala kang maraming kliyente at supplier, talagang babagay sa iyo ang Excel, dahil maraming oras upang magdisenyo ng iyong sariling mga diagram sa talahanayan at punan ang mga ito, na sinusundan ng pamamahagi ng mga dokumento sa iba't ibang mga folder sa computer: mga kontrata, mga supplier, mga kliyente, mga kliyente sa kapitbahayan , mga kliyenteng nasa development, mga kliyenteng tatanggalin – isang walang katapusang at kamangha-manghang proseso ng paglikha ng mga folder sa loob ng isang folder. At kung mayroong maraming impormasyon, maginhawa bang subaybayan ang iyong database? Siyempre, palaging may mga pagbubukod; minsan may mga organisasyon na may malalaking turnover na ang data sa pananalapi ay pinananatili lamang sa Excel. Ilang oras ang aabutin nila upang makipagpalitan at pagsamahin ang data sa pagitan ng mga departamento? Sasagot ako: marami.

Hindi ko maisip kung paano mabilis na mahanap ang kailangan mo sa isang malaking bilang ng mga dokumento ng Excel na nakaayos sa isang arbitrary na sistema. Halimbawa, kapag nagbibigay ng mga dokumento para sa mga kinakailangan mula sa tanggapan ng buwis. Paano magsusumite ang isang accountant ng mga ulat sa mga awtoridad sa regulasyon kapag ang lahat ng impormasyon ay nakakalat? Ang accounting, siyempre, ay maaaring i-outsource at ang ilang mga may-ari ng negosyo, sa kasamaang-palad, ay maaaring walang pakialam kung anong mga proseso ang maaaring mayroon ang isang partikular na espesyalista hangga't binabalanse niya ang mga balanse. Ngunit kahit na gayon, kung gayon paano naayos ang proseso ng pagpapalitan ng dokumento? Gaano kabilis mauunawaan ng isang panlabas na empleyado ang improvised na istraktura ng impormasyon?

Hindi ko masasabi ang pareho tungkol sa 1C, dahil ang lahat ng impormasyon doon ay nakabalangkas at magkakaugnay:

    Isang solong database para sa parehong remote at full-time na mga empleyado, kung saan maaari kang magtrabaho kasama ang lahat ng standardized at custom na mga dokumento;
    Ang pag-uulat sa mga awtoridad sa regulasyon ay nabuo batay sa data na naipakita na sa programa; hindi na kailangang magbukas ng maraming mga file, pagsamahin ang ilang mga halaga sa isang talahanayan upang makakuha ng mga pangwakas na resulta.
Ang "1C", sa mabuting paraan, ay isang multitasking system na naglalayong pareho sa mga tipikal na gawain sa accounting at sa pag-automate ng lahat ng proseso ng organisasyon, depende sa larangan ng aktibidad. Ang pangunahing salita dito ay sistema. Walang pumipigil sa iyo sa pag-aayos ng iyong sistema ng negosyo sa Excel, ngunit bakit muling likhain ang gulong kapag may mga solusyon na sumasaklaw sa halos lahat ng mga pangangailangan para sa pag-optimize ng oras at mga gastos sa pananalapi, na tumutulong sa pag-systematize ng iyong trabaho?

Sa pagtatanggol sa Excel

Malamang na sa tingin mo ay tutol ako sa paggawa ng data sa mga talahanayang "berde". Hindi talaga. Sa katunayan, ako mismo ay madalas na gumawa ng ilang negosyo sa Excel: kung kailangan ko ng di-makatwirang mga kalkulasyon, kung kailangan kong i-segment ang data ng kliyente, nagsasagawa ng analytics batay sa mga parameter na wala sa 1C - oo, nangyayari ito - pumunta ako sa " Excel." Sa madaling salita, sa mga talahanayan ay gumagawa ako ng mga kalkulasyon at hindi pamantayang pagsusuri, ngunit pagkatapos ay i-systematize ko pa rin ang lahat sa 1C.

At pagkatapos, upang tingnan ang mga na-download na file mula sa 1C kakailanganin mo pa rin ang Excel, dahil ang data sa 1C ay naka-imbak sa mga spreadsheet. Nararamdaman mo ba na ito ay isang mabisyo na bilog? Iba-iba ang sasabihin ko: Ang "1C" at "Excel" ay magkatabi na parang dalawang kasosyo, ngunit ang bawat isa sa kanila ay may sariling layunin, sila ay nagpupuno ng mabuti sa isa't isa, ngunit hindi pinapalitan ang isa't isa.

Kung kailangan mong i-systematize ang iyong mga gawain na isinasaalang-alang ang sistemang pambatasan ng ating estado, na isinasaalang-alang ang mga detalye at pokus ng negosyo, lalo na pagdating sa malaking dami ng impormasyon, kailangan mo ng 1C. Kung kailangan mo ng di-makatwirang mga kalkulasyon, pagbuo ng isang diskarte mula sa simula, pag-visualize ng hindi karaniwang data ng analytics, kung gayon ang Excel ay nasa iyong serbisyo. Ngunit mas maginhawang magtrabaho kasama ang mga solusyong ito nang sabay-sabay.


Ano ang resulta - "1C" o "Excel"?

Sa simula pa lang, kung ang tanong ay tungkol sa pananalapi para sa automation, kahit na ang mga pangunahing programa ng 1C ay hindi nagkakahalaga ng ganoong kalaking pera, gagamitin ko ang Excel. Ang isang malaking plus ay ang data mula sa "berde" na mga talahanayan ay maaaring i-load sa 1C nang walang pagkawala. Ngunit habang sinusukat mo, ipinapayo ko sa iyo na bigyang pansin ang mga programa para sa pag-automate ng mga proseso ng negosyo. Marami sa kanila, at maaaring hindi ito 1C...

Ang paglipat sa "1C" ay maaaring isagawa kapag naunawaan mo na kailangan mong i-optimize ang iyong mga mapagkukunan, kabilang ang pag-automate ng mga isyu na nauugnay sa mga relasyon sa mga kliyente at supplier, at sa mga awtoridad sa pangangasiwa. Sa pangkalahatan, ayusin ang iyong mga proseso sa trabaho upang mapataas ang kahusayan ng negosyo kapag ang pagpoproseso ng impormasyon ay aabutin ng maraming oras, at ang mga file ng Excel ay hindi na makakayanan ang dami ng data ng pag-input.

Gayunpaman, hindi lahat ng "1C" ay maaaring angkop para sa iyo; kailangan mong isaalang-alang ang iba't ibang mga kadahilanan: ang mga detalye at saklaw ng negosyo, ang sukat, ang pangangailangan para sa mga pang-araw-araw na gawain, ang gawain na kailangang mabawasan. Ang lahat ay indibidwal. Ang katotohanan, tulad ng sinabi ko na, ay nasa pagitan ng "1C" at "Excel" - ito ay nagpupuno sa isa't isa.

Malamang yun lang. Ngunit kung mayroon kang anumang mga katanungan, mangyaring makipag-ugnay sa amin, susubukan naming tulungan ka. Mga matagumpay na proseso ng negosyo, mga kasamahan!

Ang pamamaraang ito ay simple. Ang kakanyahan nito ay ang bagay TabularDocument may mga pamamaraan:

  • Isulat (< ИмяФайла>, < ТипФайлаТаблицы >) upang mag-upload ng data sa isang file;
  • Basahin (< ИмяФайла>, < СпособЧтенияЗначений >) para mag-load ng data mula sa isang file.

Pansin!

Ang paraan ng Write() ay available sa parehong client at server. Ang paraan ng Read() ay magagamit lamang sa gilid ng server. Kailangang tandaan ito
kapag nagpaplano ng pakikipag-ugnayan ng client-server.

Tingnan natin ang isang halimbawa ng pag-save ng isang spreadsheet na dokumento sa isang file. Ito ay kinakailangan upang lumikha at punan ang TabularDocument object sa anumang paraan, at pagbabawas sa file ay tapos na sa isang linya lamang:

TabDoc . Sumulat(FilePath, TabularDocumentFileType. XLSX);

Dito TabDoc- nabuong dokumento ng spreadsheet, Ang landas sa file— pangalan ng file na ia-upload, TabularDocumentFileType.XLSX— format ng nilikhang file. Ang mga sumusunod na format ng Excel ay sinusuportahan:

  • XLS95 - Excel 95 na format;
  • XLS97 - Excel 97 na format;
  • Ang XLSX ay isang Excel 2007 na format.

TabDoc = Bagong TabularDocument;
TabDoc . Basahin(PathToFile, Paraan ng PagbasaTabularDocumentValues.Value);

Dito Ang landas sa file— landas patungo sa na-download na Excel file. Paraan ng Pagbasa ng mga Halaga ng isang Tabular Document.Value tinutukoy kung paano dapat bigyang-kahulugan ang data na nabasa mula sa isang source na dokumento. Magagamit na Mga Pagpipilian:

  • Kahulugan;
  • Text.

Palitan sa pamamagitan ng OLE

Ang exchange sa pamamagitan ng OLE automation technology ay marahil ang pinakakaraniwang opsyon para sa programmatically working with Excel file. Pinapayagan ka nitong gamitin ang lahat ng pag-andar na ibinigay ng Excel, ngunit mas mabagal kumpara sa iba pang mga pamamaraan. Upang makipagpalitan sa pamamagitan ng OLE, kinakailangan ang pag-install ng MS Excel:

  • Sa computer ng end user, kung ang palitan ay nangyayari sa panig ng kliyente;
  • Sa 1C:Enterprise server computer, kung ang palitan ay nangyayari sa server side.

Halimbawa pagbabawas:

// Lumikha ng COM object
Excel = Bagong COMObject("Excel.Application");
// Huwag paganahin ang mga babala at tanong
Excel . DisplayAlerts = Mali;
// Lumikha ng bagong libro
Aklat = Excel. Mga WorkBook. Add();
// Posisyon sa unang sheet
Sheet = Aklat. Worksheet(1);

// Sumulat ng halaga sa isang cell
Sheet . Mga Cell(RowNumber, ColumnNumber). Halaga = CellValue;

// I-save ang file
Aklat . SaveAs(FileName);


Excel . Quit();
Excel = 0;

Mga halimbawa pagbabasa:

// -- OPTION 1 --

// Lumikha ng COM object
Excel = Bagong COMObject("Excel.Application");
// Magbukas ng libro
Aklat = Excel. Mga workbook. bukas( Ang landas sa file );

Sheet = Aklat. Worksheet(1);

// Pagsasara ng libro
Aklat . Isara(0);

// Isara ang Excel at magbakante ng memory
Excel . Quit();
Excel = 0;

// —— OPTION 2 ——

// Magbukas ng libro
Aklat = GetCOMObject( Ang landas sa file );
// Pagpoposisyon sa nais na sheet
Sheet = Aklat. Worksheet(1);

// Basahin ang halaga ng cell, kadalasan ang cell traversal loop ay matatagpuan dito
CellValue = Sheet. Mga Cell(RowNumber, ColumnNumber). Halaga;

// Pagsasara ng libro
Aklat . Aplikasyon. Qui t();

Para sa bypass Para sa lahat ng nakumpletong row ng Excel worksheet, maaari mong gamitin ang mga sumusunod na diskarte:

// -- OPTION 1 --
Bilang ng mga Row = Sheet. Mga cell(1 , 1 ). Mga Espesyal na Cell(11). Hanay;
Para sa RowNumber = 1 By Number Of Rows Cycle
CellValue = Sheet. Mga Cell(RowNumber, ColumnNumber). Halaga;
EndCycle;

// —— OPTION 2 ——
RowNumber = 0 ;
Habang ang Truth Cycle
RowNumber = RowNumber + 1 ;
CellValue = Sheet. Mga Cell(RowNumber, ColumnNumber). Halaga;
Kung HINDI ValueFilled(CellValue) Pagkatapos
I-abort;
tapusin kung;
EndCycle;

Sa halip na lampasan ang lahat ng row ng sheet nang sunud-sunod, magagawa mo itapon ang lahat ng data sa isang array at magtrabaho kasama niya. Magiging mas mabilis ang diskarteng ito kapag nagbabasa ng malaking halaga ng data:

TotalColumns = Sheet. Mga cell(1 , 1 ). Mga Espesyal na Cell(11). Hanay;
TotalRows = Dahon. Mga cell(1 , 1 ). Mga Espesyal na Cell(11). Hanay;

Rehiyon = Dahon. Saklaw(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns));
Data = Rehiyon. Halaga. Magdiskarga();

Ipinapakita ng talahanayan sa ibaba ang pinakasikat na mga katangian at pamamaraan para sa pagtatrabaho sa Excel sa pamamagitan ng OLE:

Aksyon Code Komento
Paggawa gamit ang application
Pagtatakda ng visibility ng window ng application Excel . Nakikita= Mali;
Pagtatakda ng babala output mode (display/not display) Excel . DisplayAlerts= Mali;
Pagsasara ng aplikasyon Excel . Quit();
Paggawa gamit ang isang libro
Paggawa ng bagong libro Aklat = Excel. Mga WorkBook. Idagdag();
Pagbubukas ng kasalukuyang workbook Aklat = Excel. Mga WorkBook. Buksan ang(FileName);
Nagse-save ng libro Aklat . SaveAs(FileName);
Pagsasara ng libro Aklat . Isara(0);
Paggawa gamit ang isang sheet
Pagtatakda ng kasalukuyang sheet Sheet = Aklat. WorkSheets(SheetNumber);
Pagtatakda ng pangalan Sheet . Pangalan = Pangalan;
Pag-set up ng proteksyon Sheet . Protektahan();
Pag-alis ng proteksyon Sheet . Hindi Protektahan();
Pagtatakda ng oryentasyon ng pahina Sheet . PageSetup. Oryentasyon = 2; 1 - portrait, 2 - landscape
Pagtatakda ng kaliwang hangganan Sheet . PageSetup. LeftMargin = Excel. CentimetersToPoints(Centimeters);
Pagtatakda ng pinakamataas na limitasyon Sheet . PageSetup. TopMargin = Excel. CentimetersToPoints(Centimeters);
Pagtatakda ng tamang hangganan Sheet . PageSetup. RightMargin = Excel. CentimetersToPoints(Centimeters);
Pagtatakda ng mas mababang limitasyon Sheet . PageSetup. BottomMargin = Excel. CentimetersToPoints(Centimeters);
Paggawa gamit ang mga row, column, cell
Pagtatakda ng Lapad ng Column Sheet . Mga Hanay(ColumnNumber). ColumnWidth = Lapad;
Magtanggal ng linya Sheet . Mga Hanay(RowNumber). Tanggalin();
Pag-alis ng column Sheet . Mga Hanay(ColumnNumber). Tanggalin();
Magtanggal ng cell Sheet . Mga Cell(RowNumber, ColumnNumber). Tanggalin();
Pagtatakda ng halaga Sheet . Mga Cell(RowNumber, ColumnNumber). Halaga = Halaga;
Pinagsasama-sama ang mga cell Sheet . Saklaw(Sheet. Mga Cell(RowNumber, ColumnNumber), Sheet. Mga Cell(RowNumber1, ColumnNumber1)). Pagsamahin();
Pagtatakda ng font Sheet . Mga Cell(RowNumber, ColumnNumber). Font. Pangalan = FontName;
Pagtatakda ng laki ng font Sheet . Mga Cell(RowNumber, ColumnNumber). Font. Sukat = Laki ng Font;
Pagtatakda ng bold na font Sheet . Mga Cell(RowNumber, ColumnNumber). Font. Matapang = 1 ; 1 - bold, 0 - normal
Pagtatakda ng mga italics Sheet . Mga Cell(RowNumber, ColumnNumber). Font. Italic = 1 ; 1 - italic, 0 - normal
Pagtatakda ng may salungguhit na font Sheet . Mga Cell(RowNumber, ColumnNumber). Font. Salungguhit = 2 ; 2 - may salungguhit, 1 - hindi

Upang malaman kung aling property ang kailangang baguhin o kung aling paraan ang tatawagan, maaari mong gamitin mga macro Excel. Kung nag-record ka ng isang macro na may mga kinakailangang aksyon, pagkatapos ay maaari mong tingnan ang VBA code ng na-record na macro.

Gamit ang COMSafeArray

Kapag nagda-download ng malalaking halaga ng data mula sa 1C hanggang Excel, maaari mong gamitin ang bagay upang mapabilis COMSafeArray. Ayon sa kahulugan mula sa syntax assistant, ang COMSafeArray ay isang object wrapper sa isang multidimensional array SafeArray mula sa COM. Binibigyang-daan kang lumikha at gumamit ng SafeArray para sa pagpapalitan ng data sa pagitan ng mga COM object. Sa madaling salita, ito ay isang hanay ng mga halaga na maaaring magamit upang makipagpalitan sa pagitan ng mga aplikasyon gamit ang teknolohiyang OLE.

// Lumikha ng COMSafeArray
ArrayCom = Bagong COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// Punan ang COMSafeArray
Para sa Pahina = 0 Ayon sa TotalLines - 1 Cycle
Para sa Numero = 0 Kabuuang Column - 1 Cycle
ArrayCom . SetValue(Bilang, Pahina, Halaga);
EndCycle;
EndCycle;
// Pagtatalaga ng Excel worksheet area sa mga value mula sa COMSafeArray
Sheet . Saklaw(Sheet. Mga Cell(1, 1), Sheet. Mga Cell(TotalRows,TotalColumns)). Halaga = ArrayCom;

Palitan sa pamamagitan ng ADO

Ang Excel file, kapag ipinagpalit sa pamamagitan ng ADO, ay isang database na maaaring ma-access gamit ang mga query sa SQL. Hindi kinakailangan ang pag-install ng MS Excel, ngunit dapat ay mayroon kang ODBC driver kung saan ibibigay ang access. Ang driver ng ODBC na ginamit ay tinutukoy sa pamamagitan ng pagtukoy sa string ng koneksyon sa file. Karaniwan, ang kinakailangang driver ay naka-install na sa computer.

Ang palitan sa pamamagitan ng ADO ay kapansin-pansing mas mabilis kaysa sa palitan sa pamamagitan ng OLE, ngunit kapag nag-a-upload, hindi posibleng gumamit ng Excel functionality para sa pagdidisenyo ng mga cell, paglalagay ng mga pahina, pagtatakda ng mga formula, atbp.

Halimbawa pagbabawas:


Koneksyon = Bagong COMObject("ADODB.Connection");


Tambalan . ConnectionString = "

|Data Source=" + FileName + ";
;
Tambalan . Buksan(); // Magbukas ng koneksyon

// Lumikha ng COM object para sa command
Command = Bagong COMObject("ADODB.Command");
Koponan

// Pagtatalaga ng command text para gumawa ng table
Koponan . CommandText = "GUMAWA NG TABLE [Sheet1] (Column1 char(255), Column2 date, Column3 int, Column4 float)";
Koponan . Ipatupad(); // Ipatupad ang utos

// Pagtatalaga ng command text para magdagdag ng table row
Koponan . CommandText = "INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) values ​​​​('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Ipatupad ang utos

// Alisin ang command at isara ang koneksyon
Command = Undefined;
Tambalan . Isara();
Koneksyon = Hindi natukoy;

Upang lumikha ng isang bagong sheet at mabuo ang istraktura nito, maaari mong gamitin ang mga bagay ADOX.Catalog At ADOX.Table. Sa kasong ito, magiging ganito ang code:

// Lumikha ng COM object para sa pagtatrabaho sa aklat
Aklat = Bagong COMObject("ADOX.Catalog");
Aklat . ActiveConnection = Koneksyon;

// Lumikha ng COM object upang gumana sa istraktura ng data sa sheet
Talahanayan = Bagong COMObject("ADOX.Table");
mesa . Pangalan = "Sheet1" ;
mesa . Mga hanay. Append("Column1", 202);
mesa . Mga hanay. Append("Column2", 7);
mesa . Mga hanay. Append("Column3", 5);
mesa . Mga hanay. Append("Column4", 5);

// Lumikha ng isang sheet na may inilarawang istraktura sa workbook
Aklat . Mga mesa. Idugtong(Talahanayan);
Talahanayan = Hindi Natukoy;
Aklat = Hindi Natukoy;

Sa halimbawa sa itaas, sa pamamaraan

mesa . Mga hanay. Idugtong(“Hanay1”, 202);

ang pangalawang parameter ay tumutukoy sa uri ng hanay. Opsyonal ang parameter, narito ang ilang value ng uri ng column:

  • 5 - adDouble;
  • 6 - adCurrency;
  • 7 - addDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Halimbawa pagbabasa:

// Lumikha ng COM object para sa koneksyon
Koneksyon = Bagong COMObject("ADODB.Connection");

// Itakda ang string ng koneksyon
Tambalan . ConnectionString = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=" + FileName + ";
|Extended Properties=""Excel 12.0 XML;HDR=OO"";";
Tambalan . Buksan(); // Magbukas ng koneksyon

// Lumikha ng COM object upang matanggap ang pagpili
Piliin = Bagong COMObject("ADODB.Recordset");
RequestText = "PUMILI * MULA SA [Sheet1$]";

// Isagawa ang kahilingan
Sample . Buksan(QueryText, Koneksyon);

// I-bypass ang sample na resulta
Wala pang pinipili. EOF() Loop
Halaga ng Column1 = Pinili. Mga patlang. Item("Column1"). Halaga ; // Access ayon sa pangalan ng column
Column2Value = Selection. Mga patlang. Item(0). Halaga; // Access sa pamamagitan ng column index
Sample . MoveNext();
EndCycle;

Sample . Isara();
Sample = Hindi Natukoy;
Tambalan . Isara();
Koneksyon = Undefined;

Sa string ng koneksyon ang parameter HDR tinutukoy kung paano makikita ang unang linya sa sheet. Mga posibleng opsyon:

  • OO - ang unang linya ay itinuturing bilang mga pangalan ng hanay. Maaaring ma-access ang mga halaga sa pamamagitan ng pangalan at index ng hanay.
  • HINDI - ang unang linya ay itinuturing bilang data. Ang mga halaga ay maaari lamang ma-access sa pamamagitan ng index ng hanay.

Ang mga halimbawang ito ay sumasaklaw lamang sa ilang ADO object. Ang modelo ng object ng ADO ay binubuo ng mga sumusunod na bagay:

  • koneksyon;
  • Utos;
  • recordset;
  • Record;
  • Mga patlang;
  • Stream;
  • Mga pagkakamali;
  • mga parameter;
  • Ari-arian.

Mag-upload nang walang programming

Upang i-save ang data mula sa 1C hanggang Excel, hindi palaging ipinapayong gumamit ng programming. Kung sa Enterprise mode ay maipapakita ng user ang data na kinakailangan para sa pag-download, maaari silang i-save sa Excel nang walang programming.

Upang i-save ang isang spreadsheet na dokumento (halimbawa, ang resulta ng isang ulat), maaari mong tawagan ang command I-save o I-save bilang… pangunahing menu.

Sa window na bubukas, kailangan mong piliin ang direktoryo, pangalan at format ng naka-save na file.

Upang i-save ang data mula sa mga dynamic na listahan (halimbawa, isang listahan ng mga item), dapat mong:

  1. Mag-output ng data sa isang spreadsheet na dokumento gamit ang command Higit pa ⇒ Listahan...;
  2. I-save ang spreadsheet na dokumento sa kinakailangang format.

Sa 1C mayroong 2 paraan upang gumana sa mga MS Excel file: sa pamamagitan ng COM object at built-in na 1C tool gamit ang spreadsheet document object. Tingnan natin ang parehong mga pamamaraan na ito nang mas detalyado.

1. Magtrabaho sa pamamagitan ng COM object.

Ang pamamaraang ito ay nangangailangan ng naka-install na MS Excel, at kung nagtatrabaho ka sa isang file sa server, dapat na mai-install ang MS Excel sa server, kung sa client, kinakailangan din ang MS Excel sa client side.

Halimbawa (makikita mo ito sa text form sa dulo ng artikulo):

Dapat tandaan na ang lahat ng mga bagay, pamamaraan at katangian na ibinigay ng COM object na "Excel.Application" ay mga bagay, pamamaraan at katangian ng VBA, ang MS Office programming language.

Tandaan:

Minsan kailangan mong magtrabaho sa isang umiiral nang template. Pagkatapos ay kailangan nating iimbak ang template na ito sa isang lugar upang ang lahat ng kinakailangang user ay may access dito. Gayunpaman, mayroong isang mas simpleng solusyon, i-save ang template bilang isang binary layout.

2. Magtrabaho sa pamamagitan ng Tabular Document 1C.

Sinusuportahan ng 1C spreadsheet na dokumento ang format ng MS Excel para sa pag-record simula sa platform 8, ngunit para sa pagbubukas lamang simula sa platform 8.3.6. Bukod dito, kapag binuksan, lahat ng mga sheet ay na-load sa isang spreadsheet na dokumento. Mula noong bersyon 8.3.10, kapag naglo-load, ang iba't ibang mga sheet ay na-load bilang iba't ibang mga lugar.

Ang isang halimbawang entry ay napaka-simple at hindi nangangailangan ng espesyal na pansin:

Gayunpaman, narito kami ay may problema. Kapag nagre-record mula sa 1C sa isang Excel workbook, ang pagpapakita ng mga pangalan ng sheet ay hindi pinagana bilang default.

Ang problemang ito ay maaaring malutas sa 2 paraan, 1 - sa mismong aklat, paganahin ang pagpapakita ng mga sheet sa mga setting (hindi lahat ng mga gumagamit ay sumasang-ayon na gawin ito), 2 - gawin ito sa pamamagitan ng isang bagay na COM (kailangan nating muli ang pag-install ng MS Excel ).

Pagkatapos ng maliit na karagdagan na ito, makikita ang mga label ng sheet sa MS Excel file.

Ang pagbabasa ng MS Excel ay hindi isang madaling gawain, dahil ang paraan ng pagbabasa ay magagamit lamang sa server o makapal na kliyente. Upang gawin ito, kailangan naming ilipat ang MS Excel file sa server.

&OnClient

Pamamaraan CreateDocument()

Exception

EndAttempt;

Aklat = Excel.WorkBooks.Add(); //Gumawa ng bagong workbook ng MS Excel

Sheet = Book.WorkSheets.Add(); //Magdagdag ng sheet

Sheet.Name = "Halimbawa mula sa 1C"; //Itakda ang pangalan ng sheet

Sheet.Cells(1,1).Value = "Gumawa tayo ng formula";!}

Sheet.Cells(2,1).Value = 1;

Sheet.Cells(2,2).Value = 2;

Sheet.Cells(2,3).Formula = "=A2+B2";

Sheet.Cells(3,1).Value = CurrentDate();

Book.SaveAs("C:\1\Test.xlsx");

Book.Close();

Katapusan ng Pamamaraan

&Sa server

Function GetLayoutServer()

Return FormAttributesValue("Object").GetLayout("TemplateForUpload"); //Sa ganitong paraan makuha natin ang panlabas na layout ng pagproseso;

EndFunction

&OnClient

Pamamaraan ng Trabaho()

Excel = Bagong COMObject("Excel.Application");

Exception

Report("Ang pagtatangkang ikonekta ang bahagi ng Excel ay hindi matagumpay. Maaaring hindi mai-install ang Excel sa computer na ito!");

EndAttempt;

Layout = GetLayoutServer();

Layout.Write(TemporaryFileName);

Mayroon ka bang tanong o nangangailangan ng tulong mula sa isang consultant?

Aklat = Excel.WorkBooks.Open(TemporaryFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells(6,1).Value = "Date:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "dd/mm/yy;@"; // Ibigay ang format ng petsa, nakuha ang format na ito sa pamamagitan ng pag-record ng macro sa MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // I-stretch ang column para eksaktong magkasya ang petsa

Book.SaveAs(FileName);

Book.Close();

Katapusan ng Pamamaraan

&OnClient

Katapusan ng Pamamaraan

&OnClient

Pamamaraan WriteTabularDocument()

TabularDocument = Bagong TabularDocument();

TabularDocument.Area("R1C1").Text = "Halimbawa ng record sa MS Excel mula sa 1C";

TabularDocument.Write("C:\1\Test2.xls",TabularDocumentFileType.XLSX);

Excel = Bagong COMObject("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0.6;

Excel.ActiveWorkbook.Save();

Excel.Application.Quit()

Katapusan ng Pamamaraan

BinaryData = Bagong BinaryData("C:\1\test2.xlsx");

Address=PlaceInTemporaryStorage(BinaryData,ThisForm.UniqueIdentifier) ​​​​;

TabularDocument = UploadOnServer(Address);

TabularDocument.Show();

Katapusan ng Pamamaraan

&Sa server

Function UploadOnServer(Address)

TemporaryFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTemporaryStorage(Address);

FileData.Write(TemporaryFileName);

TabularDocument = Bagong TabularDocument();

ibalik ang TabularDocument;