Skaičiuoklės dokumento išsaugojimo programoje „Excel“ gudrybės, kad galėtumėte toliau dirbti su juo. Skaičiuoklės dokumento išsaugojimo programoje „Excel“ gudrybės, kad galėtumėte toliau dirbti su juo. 1c Išsaugokite skaičiuoklės dokumentą programoje „Excel“

Šis metodas paprastas. Jo esmė ta, kad objektas Lentelinis dokumentas turi metodus:

  • Užsirašyti (< ИмяФайла>, < ТипФайлаТаблицы >) įkelti duomenis į failą;
  • Skaityti (< ИмяФайла>, < СпособЧтенияЗначений >>) norėdami įkelti duomenis iš failo.

Dėmesio!

Write() metodas galimas ir kliente, ir serveryje. Skaityti() metodas galimas tik serverio pusėje. Reikia tai atsiminti
planuojant kliento ir serverio sąveiką.

Pažvelkime į taupymo pavyzdį skaičiuoklės dokumentasį failą. Būtina bet kokiu būdu sukurti ir užpildyti objektą TabularDocument, ir iškrovimasį failą atliekama tik viena eilute:

TabDoc . Write(FilePath, TabularDocumentFileType. XLSX);

Čia TabDoc- sugeneruotas skaičiuoklės dokumentas, Kelias į failą— įkeliamo failo pavadinimas, TabularDocumentFileType.XLSX- sukurto failo formatas. Palaikomi šie „Excel“ formatai:

  • XLS95— Excel formatu 95;
  • XLS97 – Excel 97 formatas;
  • XLSX yra Excel 2007 formatas.

TabDoc = naujas lentelės dokumentas;
TabDoc . Skaityti(PathToFile, Method of ReadingTabularDocumentValues.Value);

Čia Kelias į failą— kelias į atsisiųstą Excel failą. Lentinio dokumento verčių skaitymo metodas. Vertė nustato, kaip turi būti interpretuojami duomenys, nuskaityti iš šaltinio dokumento. Galimos parinktys:

  • Reikšmė;
  • Tekstas.

Keistis per OLE

Keitimasis naudojant OLE automatizavimo technologiją yra bene labiausiai paplitusi galimybė programinis darbas Su Excel failai. Tai leidžia naudoti visas „Excel“ teikiamas funkcijas, tačiau yra lėtesnis, palyginti su kitais metodais. Norint keistis per OLE, reikia įdiegti MS Excel:

  • Galutinio vartotojo kompiuteryje, jei mainai vyksta kliento pusėje;
  • 1C:Enterprise serverio kompiuteryje, jei mainai vyksta serverio pusėje.

Pavyzdys iškrovimas:

// Sukurkite COM objektą
Excel = naujas COMObject("Excel.Application");
// Išjungti įspėjimus ir klausimus
Excel . DisplayAlerts = klaidingas;
// Sukurti naują knygą
Knyga = Excel. Darbo knygos. Papildyti();
// Padėtis pirmame lape
Lapas = Knyga. Darbalapiai (1);

// Įrašykite reikšmę langelyje
Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Reikšmė = CellValue;

// Išsaugokite failą
Knyga . Išsaugoti kaip(failo pavadinimas);


Excel . išeiti ();
Excel = 0;

Pavyzdžiai skaitymas:

// -- 1 VARIANTAS --

// Sukurkite COM objektą
Excel = naujas COMObject("Excel.Application");
// Atsiversk knygą
Knyga = Excel. Darbo knygelės. Atviras( Kelias į failą );

Lapas = Knyga. Darbalapiai (1);

// Knygos užvertimas
Knyga . Uždaryti (0);

// Uždarykite Excel ir atlaisvinkite atminties
Excel . išeiti ();
Excel = 0;

// —— 2 VARIANTAS ——

// Atsiversk knygą
Knyga = GautiCOMObject( Kelias į failą );
// Padėties nustatymas norimame lape
Lapas = Knyga. Darbalapiai (1);

// Skaitykite langelio reikšmę, paprastai čia yra langelio perėjimo kilpa
CellValue = lapas. Langeliai (eilutės skaičius, stulpelio skaičius). Vertė;

// Knygos užvertimas
Knyga . Taikymas. Qui t();

Dėl Apeiti visos užpildytos eilutės Excel lapas Gali būti naudojami šie metodai:

// -- 1 VARIANTAS --
Eilučių skaičius = lapas. Ląstelės (1, 1). SpecialCells(11). Eilė;
Jei eilučių skaičius = 1 pagal eilučių skaičių, ciklas
CellValue = lapas. Langeliai (eilutės skaičius, stulpelio skaičius). Vertė;
EndCycle;

// —— 2 VARIANTAS ——
Eilutės skaičius = 0;
Nors tiesos ciklas
EilutėsNumber = EilutėsNumber + 1 ;
CellValue = lapas. Langeliai (eilutės skaičius, stulpelio skaičius). Vertė;
Jei NE ValueFilld(CellValue) Tada
Nutraukti;
endIf;
EndCycle;

Užuot perėję visas lapo eilutes paeiliui, galite išmeskite visus duomenis į masyvą ir dirbti su juo. Šis metodas bus greitesnis nuskaitant didelį duomenų kiekį:

TotalColumns = lapas. Ląstelės (1, 1). SpecialCells(11). Stulpelis;
TotalRows = Lapas. Ląstelės (1, 1). SpecialCells(11). Eilė;

Regionas = Lapas. Diapazonas(Sheet. Cells(1, 1), Sheet. Cells(Total Rows,Total Columns));
Duomenys = Regionas. Vertė. Išsikrauti();

Žemiau esančioje lentelėje pateikiamos populiariausios darbo su „Excel“ per OLE savybės ir metodai:

Veiksmas Kodas Komentaras
Darbas su programa
Programos lango matomumo nustatymas Excel . Matomas= Netiesa;
Įspėjimo išvesties režimo nustatymas (rodyti / nerodyti) Excel . Display Alerts= Netiesa;
Programos uždarymas Excel . išeiti ();
Darbas su knyga
Naujos knygos kūrimas Knyga = Excel. Darbo knygos. Papildyti();
Esamos darbaknygės atidarymas Knyga = Excel. Darbo knygos. Atidaryti (failo pavadinimas);
Knygos išsaugojimas Knyga . Išsaugoti kaip (failo pavadinimas);
Knygos uždarymas Knyga . Uždaryti (0);
Darbas su lapeliu
Dabartinio lapo nustatymas Lapas = Knyga. Darbo lapai (SheetNumber);
Vardo nustatymas Lapas . Vardas = Vardas;
Apsaugos nustatymas Lapas . Apsaugoti();
Apsaugos pašalinimas Lapas . Atšaukti apsaugą();
Puslapio orientacijos nustatymas Lapas . Puslapio nustatymai. Orientacija = 2; 1 - portretas, 2 - kraštovaizdis
Kairiosios kraštinės nustatymas Lapas . Puslapio nustatymai. LeftMargin = Excel. Centimetrai iki taškų (centimetrai);
Viršutinės ribos nustatymas Lapas . Puslapio nustatymai. TopMargin = Excel. Centimetrai iki taškų (centimetrai);
Dešiniosios ribos nustatymas Lapas . Puslapio nustatymai. RightMargin = Excel. Centimetrai iki taškų (centimetrai);
Apatinės ribos nustatymas Lapas . Puslapio nustatymai. BottomMargin = Excel. Centimetrai iki taškų (centimetrai);
Darbas su eilutėmis, stulpeliais, langeliais
Stulpelio pločio nustatymas Lapas . Stulpeliai(StulpelioNumber). Stulpelio plotis = plotis;
Ištrinti eilutę Lapas . Eilutės (eilutės skaičius). Ištrinti();
Stulpelio pašalinimas Lapas . Stulpeliai (StulpelioNumber). Ištrinti();
Ištrinkite langelį Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Ištrinti();
Vertės nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Vertė = vertė;
Ląstelių sujungimas Lapas . Diapazonas (Lapas. Langeliai (eilutės skaičius, stulpelio skaičius), lapas. langeliai (eilės skaičius1, stulpelio skaičius1)). Sujungti();
Šrifto nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Šriftas. Vardas = Šrifto pavadinimas;
Šrifto dydžio nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Šriftas. Dydis = šrifto dydis;
Paryškinto šrifto nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Šriftas. Paryškintas = 1 ; 1 - paryškintas, 0 - normalus
Kursyvo nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Šriftas. Kursyvas = 1 ; 1 – kursyvas, 0 – įprastas
Pabraukto šrifto nustatymas Lapas . Langeliai (eilutės skaičius, stulpelio skaičius). Šriftas. Pabraukti = 2 ; 2 – pabraukta, 1 – ne

Norėdami sužinoti, kurią nuosavybę reikia keisti ar kokiu būdu skambinti, galite pasinaudoti makrokomandas Excel. Jei įrašysite makrokomandą atlikdami reikiamus veiksmus, galėsite ją žiūrėti vėliau programos kodas VBA įrašytoje makrokomandoje.

Naudojant COMSafeArray

Atsisiųsdami didelius duomenų kiekius iš 1C į „Excel“, galite naudoti objektą, kad pagreitintumėte COMSafeArray. Pagal sintaksės asistento apibrėžimą, COMSafeArray yra daugiamačio masyvo objekto apvyniojimas SafeArray iš COM. Leidžia kurti ir naudoti SafeArray duomenims keistis tarp COM objektų. Paprasčiau tariant, tai yra verčių masyvas, kuris gali būti naudojamas keistis programomis naudojant OLE technologiją.

// Sukurkite COMSafeArray
ArrayCom = naujas COMSafeArray("VT_Variant" , TotalColumns, Total Rows);
// Užpildykite COMSafeArray
Dėl Puslapis = 0 pagal TotalLines – 1 ciklas
Dėl Skaičius = 0 iš viso stulpelių – 1 ciklas
ArrayCom . SetValue (skaičius, puslapis, reikšmė);
EndCycle;
EndCycle;
// „Excel“ darbalapio srities priskyrimas reikšmėms iš „COMSafeArray“.
Lapas . Diapazonas (Sheet. Cells (1, 1), Sheet. Cells (Iš viso eilučių, Iš viso stulpelių)). Reikšmė = ArrayCom;

Keistis per ADO

„Excel“ failas, kai keičiamasi per ADO, yra duomenų bazė, kurią galima pasiekti naudojant SQL užklausas. MS Excel diegti nereikia, tačiau turite turėti ODBC tvarkyklę, su kuria bus suteikta prieiga. Naudotina ODBC tvarkyklė nustatoma nurodant failo ryšio eilutę. Paprastai reikalinga tvarkyklė jau yra įdiegta kompiuteryje.

Pastebimas keitimas per ADO greitesnis apsikeitimas per OLE, tačiau įkeliant nėra galimybės naudoti Excel funkcionalumą kuriant langelius, puslapio išdėstymą, nustatyti formules ir pan.

Pavyzdys iškrovimas:


Ryšys = naujas COMObject("ADODB.Ryšys");


Junginys . ConnectionString = "

|Duomenų šaltinis=" + Failo pavadinimas + ";
;
Junginys . Atviras(); // Atidarykite ryšį

// Sukurkite komandos COM objektą
Komanda = naujas COMObject("ADODB.Command");
Komanda

// Komandos teksto priskyrimas kuriant lentelę
Komanda . CommandText = "KURTI LENTELĘ [Sheet1] (1 stulpelis char(255), 2 stulpelio data, 3 stulpelio vidurys, 4 stulpelio plūdimas)";
Komanda . Vykdyti (); // Vykdykite komandą

// Komandos teksto priskyrimas lentelės eilutei pridėti
Komanda . CommandText = „INSERT INTO [Sheet1] (1 stulpelis, 2 stulpelis, 3 stulpelis, 4 stulpelis) vertės ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Vykdykite komandą

// Pašalinkite komandą ir uždarykite ryšį
Komanda = neapibrėžta;
Junginys . Uždaryti();
Ryšys = neapibrėžtas;

Norėdami sukurti naują lapą ir suformuoti jo struktūrą, galite naudoti objektus ADOX.Katalogas Ir ADOX.Lentelė. Tokiu atveju kodas atrodys taip:

// Sukurkite COM objektą darbui su knyga
Knyga = Naujas COMOobjektas("ADOX.Katalogas");
Knyga . ActiveConnection = Ryšys;

// Sukurkite COM objektą, kad galėtumėte dirbti su duomenų struktūra lape
Lentelė = naujas COMOobjektas("ADOX.Lentelė");
Lentelė . Vardas = "1 lapas" ;
Lentelė . Stulpeliai. Pridėti("1 stulpelis", 202);
Lentelė . Stulpeliai. Pridėti("2 stulpelis", 7);
Lentelė . Stulpeliai. Pridėti ("3 stulpelis", 5);
Lentelė . Stulpeliai. Pridėti("4 stulpelis", 5);

// Darbaknygėje sukurkite lapą su aprašyta struktūra
Knyga . Lentelės. Pridėti (lentelė);
Lentelė = Neapibrėžta;
Knyga = Neapibrėžta;

Aukščiau pateiktame pavyzdyje metodu

Lentelė . Stulpeliai. Pridėti(„1 stulpelis“, 202);

antrasis parametras nurodo stulpelio tipą. Parametras yra neprivalomas, čia pateikiamos kelios stulpelio tipo reikšmės:

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

Pavyzdys skaitymas:

// Sukurkite ryšio COM objektą
Ryšys = naujas COMObject("ADODB.Ryšys");

// Nustatykite ryšio eilutę
Junginys . ConnectionString = "
|Teikėjas=Microsoft.ACE.OLEDB.12.0;
|Duomenų šaltinis=" + Failo pavadinimas + ";
|Išplėstinės savybės=""Excel 12.0 XML;HDR=TAIP"";";
Junginys . Atviras(); // Atidarykite ryšį

// Sukurkite COM objektą, kad gautumėte pasirinkimą
Select = New COMObject("ADODB.Recordset");
Užklausos tekstas = "SELECT * FROM [Sheet1$]";

// Vykdykite prašymą
Pavyzdys . Atidaryti(QueryText, Connection);

// Apeiti mėginio rezultatą
Dar ne atranka. EOF() Ciklas
1 stulpelio reikšmė = pasirinkimas. Laukai. Elementas („1 stulpelis“). Vertė ; // Prieiga pagal stulpelio pavadinimą
Column2Value = pasirinkimas. Laukai. Prekė (0). Vertė; // Prieiga pagal stulpelio indeksą
Pavyzdys . MoveNext();
EndCycle;

Pavyzdys . Uždaryti();
Pavyzdys = Neapibrėžta;
Junginys . Uždaryti();
Ryšys = Neapibrėžta;

Ryšio eilutėje parametras HDR nustato, kaip bus suvokiama pirmoji lapo eilutė. Galimi variantai:

  • TAIP – pirmoji eilutė traktuojama kaip stulpelių pavadinimai. Vertes galima pasiekti pagal pavadinimą ir stulpelio indeksą.
  • NE – pirmoji eilutė traktuojama kaip duomenys. Vertes galima pasiekti tik naudojant stulpelio indeksą.

Šie pavyzdžiai apima tik kelis ADO objektus. ADO objekto modelį sudaro šie objektai:

  • ryšys;
  • Komanda;
  • įrašų rinkinys;
  • Įrašas;
  • Laukai;
  • Srautas;
  • Klaidos;
  • parametrai;
  • Savybės.

Atsisiųsti be programavimo

Norint išsaugoti duomenis iš 1C į „Excel“, ne visada patartina kreiptis į programavimą. Jei įmonės režimu vartotojas gali rodyti duomenis, reikalingus atsisiuntimui, tada juos galima įrašyti Excel be programavimo.

Norėdami išsaugoti skaičiuoklės dokumentą (pavyzdžiui, ataskaitos rezultatą), galite iškviesti komandą Sutaupyti arba Išsaugoti kaip… Pagrindinis meniu.

Atsidariusiame lange reikia pasirinkti išsaugoto failo katalogą, pavadinimą ir formatą.

Norėdami išsaugoti duomenis dinaminiai sąrašai(pavyzdžiui, prekių sąrašas), turite:

  1. Išveskite duomenis į skaičiuoklės dokumentą naudodami komandą Daugiau ⇒ Sąrašas...;
  2. Išsaugokite skaičiuoklės dokumentą reikiamu formatu.

Dėl tolesnis darbas su duomenimis, gautais skaičiuoklės dokumente iš bet kurios versijos 1C sistemos, juos galima išsaugoti xls(x) formatu.

Viskas būtų gerai, bet atidarius ją Excel vartotojas iš karto supranta, kad kažkas negerai su lentele, na taip, nėra nuorodų į knygos lapus. %)

Taip buvo 7-oje 1C versijoje ir perkelta į 8-ąją, taip, yra pažanga, 8 galite išsaugoti formatu xlsx, vietinis formatas naujausios versijos Excel.

Norėdami išspręsti problemą, yra keletas paprastų manipuliacijų, pirmas dalykas, kuris ateina į galvą bet kuriam vartotojui, yra išsaugoti lentelę kitu formatu, tačiau net ir čia nėra norimo rezultato, tada pradedame kopijuoti-įklijuoti į naują knygą Excel.
Yra ir kita galimybė, tarsi pažengusiems vartotojams, – pereiti į nustatymus „Excel“ ir skiltyje „Išplėstinė“ pažymėkite langelį „Rodyti lapų etiketes“. Tai teisinga, bet taip pat įprasta, atsižvelgiant į dažną duomenų, gautų iš 1C plokščių lentelių pavidalu, apdorojimą ir tolesnę duomenų analizę formoje. sukamosios lentelės ir kitais būdais pateikti duomenis programoje Excel.

Pati pavargau lygiai taip pat varninti varneles ir problemą išsprendžiau rausdamasis, pavyzdžiui, internete, o pasižiūrėjus į kai kuriuos kitus patobulinimus pavyko įgyvendinti paprastą (vieniems tai mygtukas akordeonas, kitiems ramentas, tačiau dėl skonio nesiginčijama) automatizavimo mechanizmas Sprendžiant lapų etikečių rodymo problemą.

Viskas, ką jums reikia padaryti, tai naudoti dvi „Excel“ lango ypatybes:

DisplayWorkbookTabs // vėliavėlė, skirta knygos lapų skirtukams rodyti TabRatio // darbaknygės skirtuko srities pločio ir pločio santykis horizontali juostelė lango slinkimas (kaip skaičius nuo 0 (nulio) iki 1, numatytoji reikšmė 0,6)

TabDocument.Write(FullFileName, TabularDocumentFileType.XLS); Excel = naujas COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Matoma = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(VisasVardas, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // jei reikia toliau dirbti su knyga
//Excel.Application.Quit() //jei tik išeisime

TabDocument.Write(FullFileName, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Matoma = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(VisasVardas, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // jei reikia toliau dirbti su knyga
//Excel.Application.Quit() //jei tik išeisime

Norint toliau dirbti su duomenimis, gautais skaičiuoklės dokumente iš bet kurios versijos 1C sistemos, juos galima išsaugoti xls(x) formatu.

Viskas būtų gerai, bet atidarius ją Excel vartotojas iš karto supranta, kad kažkas negerai su lentele, na taip, nėra nuorodų į knygos lapus. %)

Taip buvo 7-oje 1C versijoje ir perkelta į 8-ąją, taip, yra pažanga, 8 galite išsaugoti formatu xlsx, vietinis naujausių „Excel“ versijų formatas.

Norėdami išspręsti problemą, yra keletas paprastų manipuliacijų, pirmas dalykas, kuris ateina į galvą bet kuriam vartotojui, yra išsaugoti lentelę kitu formatu, tačiau net ir čia nėra norimo rezultato, tada pradedame kopijuoti-įklijuoti į naują knygą Excel.
Yra ir kita galimybė, tarsi pažengusiems vartotojams, – pereiti į nustatymus „Excel“ ir skiltyje „Išplėstinė“ pažymėkite langelį „Rodyti lapų etiketes“. Tai teisinga, bet taip pat įprasta, atsižvelgiant į dažną duomenų, gautų iš 1C, apdorojimą plokščių lentelių pavidalu ir tolesnę duomenų analizę suvestinių lentelių pavidalu ir kitus duomenų pateikimo būdus „Excel“.

Pati pavargau lygiai taip pat varninti varneles ir problemą išsprendžiau rausdamasis, pavyzdžiui, internete, o pasižiūrėjus į kai kuriuos kitus patobulinimus pavyko įgyvendinti paprastą (vieniems tai mygtukas akordeonas, kitiems ramentas, tačiau dėl skonio nesiginčijama) automatizavimo mechanizmas Sprendžiant lapų etikečių rodymo problemą.

Viskas, ką jums reikia padaryti, tai naudoti dvi „Excel“ lango ypatybes:

DisplayWorkbookTabs // indikatorius, skirtas darbaknygės lapų skirtukams rodyti TabRatio // darbaknygės skirtukų srities pločio ir horizontalios lango slinkties juostos pločio santykis (skaičiumi nuo 0 (nulio) iki 1, numatytoji reikšmė 0,6)

TabDocument.Write(FullFileName, TabularDocumentFileType.XLS); Excel = naujas COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Matoma = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(VisasVardas, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // jei reikia toliau dirbti su knyga
//Excel.Application.Quit() //jei tik išeisime

TabDocument.Write(FullFileName, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Matoma = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(VisasVardas, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // jei reikia toliau dirbti su knyga
//Excel.Application.Quit() //jei tik išeisime

Dalintis