Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Spremanje dokumenta proračunske tablice u Excel 1c. Trikovi za spremanje tabelarnog dokumenta u Excel za dalji rad s njim

Spremanje dokumenta proračunske tablice u Excel 1c. Trikovi za spremanje tabelarnog dokumenta u Excel za dalji rad s njim

Za daljnji rad s podacima primljenim u dokumentu proračunske tablice iz 1C sistema bilo koje verzije, oni se mogu spremiti u xls(x) formatu.

Sve bi bilo u redu, ali kada ga otvori u Excelu, korisnik odmah shvati da nešto nije u redu s tablicom, pa, da, nema prečica do listova knjige. %)

To je bio slučaj u 7. verziji 1C i migrirao na 8., da, ima napretka, u 8 možete spremiti u formatu xlsx, izvorni format najnovijih verzija programa Excel.

Za rješavanje problema postoji nekoliko jednostavnih manipulacija, prvo što svakom korisniku padne na pamet je da snimi tablicu u drugom formatu, ali ni ovdje nema željenog rezultata, tada počinjemo praviti copy-paste u novu knjigu Excel.
Postoji još jedna opcija, kao za napredne korisnike, - ovo je odlazak u postavke Excel i u odjeljku Napredno potvrdite okvir "Prikaži oznake listova". To je ispravno, ali je i rutinsko, u svjetlu česte obrade podataka dobijenih iz 1C u obliku ravnih tabela i dalje analize podataka u obliku pivot tabela i drugih načina predstavljanja podataka u Excel-u.

I sam sam se umorio od štikliranja na isti način i riješio sam problem tako što sam npr. preturao po internetu i gledajući neke druge događaje uspio sam implementirati jedno jednostavno (nekome je harmonika, nekome štaka, međutim, nema rasprave oko ukusa) mehanizam automatizacije Rešavanje problema sa prikazivanjem etiketa listova.

Sve što treba da uradite je da koristite dva svojstva Excel prozora:

DisplayWorkbookTabs // indikator za prikaz kartica listova radne knjige TabRatio // omjer širine područja kartica radne knjige i širine horizontalne trake za pomicanje prozora (kao broj između 0 (nula) i 1, zadana vrijednost 0,6)

TabDocument.Write(FullFileName, TabularDocumentFileType.XLS); Excel = Novi COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; Puno ime = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(Puno ime, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // ako trebate dalje raditi s knjigom
//Excel.Application.Quit() //ako samo izađemo

TabDocument.Write(FullFileName, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; Puno ime = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(Puno ime, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // ako trebate dalje raditi s knjigom
//Excel.Application.Quit() //ako samo izađemo

Ova metoda je jednostavna. Njegova suština je da objekat TabularDocument ima metode:

  • Zapiši (< ИмяФайла>, < ТипФайлаТаблицы >) za upload podataka u datoteku;
  • Čitaj (< ИмяФайла>, < СпособЧтенияЗначений >) za učitavanje podataka iz datoteke.

Pažnja!

Metoda Write() dostupna je i na klijentu i na serveru. Metoda Read() dostupna je samo na strani servera. Treba zapamtiti ovo
prilikom planiranja interakcije klijent-server.

Pogledajmo primjer spremanja dokumenta proračunske tablice u datoteku. Potrebno je kreirati i popuniti objekat TabularDocument na bilo koji način, i istovar na fajl se radi samo sa jednom linijom:

TabDoc . Write(FilePath, TabularDocumentFileType. XLSX);

Evo TabDoc- generirani tabelarni dokument, Put do datoteke— naziv datoteke za otpremanje, TabularDocumentFileType.XLSX— format kreirane datoteke. Podržani su sljedeći Excel formati:

  • XLS95 - Excel 95 format;
  • XLS97 - Excel 97 format;
  • XLSX je Excel 2007 format.

TabDoc = Novi TabularDocument;
TabDoc . Read(PathToFile, Metoda čitanjaTabularDocumentValues.Value);

Evo Put do datoteke— putanja do preuzete Excel datoteke. Metoda čitanja vrijednosti tabelarnog dokumenta.Vrijednost određuje kako treba tumačiti podatke pročitane iz izvornog dokumenta. Dostupne opcije:

  • Značenje;
  • Tekst.

Razmjena putem OLE

Razmjena putem OLE automatizacijske tehnologije je možda najčešća opcija za programski rad s Excel datotekama. Omogućava vam da koristite sve funkcije koje pruža Excel, ali je sporiji u odnosu na druge metode. Za zamjenu putem OLE-a potrebna je instalacija MS Excel-a:

  • Na računaru krajnjeg korisnika, ako se razmjena dogodi na strani klijenta;
  • Na serverskom računaru 1C:Enterprise, ako se razmjena dogodi na strani servera.

Primjer istovar:

// Kreiranje COM objekta
Excel = Novi COMObject("Excel.Application");
// Onemogući upozorenja i pitanja
Excel . DisplayAlerts = False;
// Kreirajte novu knjigu
Book = Excel. Radne sveske. Dodati();
// Položaj na prvom listu
List = Knjiga. Radni listovi(1);

// Upisuje vrijednost u ćeliju
List . Ćelije (broj reda, broj kolone). Vrijednost = CellValue;

// Sačuvajte datoteku
Book . Sačuvaj kao (ime datoteke);


Excel . Quit();
Excel = 0;

Primjeri čitanje:

// -- OPCIJA 1 --

// Kreiranje COM objekta
Excel = Novi COMObject("Excel.Application");
// Otvorite knjigu
Book = Excel. Radne sveske. Otvori( Put do datoteke );

List = Knjiga. Radni listovi(1);

// Zatvaranje knjige
Book . Zatvori(0);

// Zatvorite Excel i oslobodite memoriju
Excel . Quit();
Excel = 0;

// —— OPCIJA 2 ——

// Otvorite knjigu
Book = GetCOMObject( Put do datoteke );
// Pozicioniranje na željeni list
List = Knjiga. Radni listovi(1);

// Pročitajte vrijednost ćelije, obično se ovdje nalazi petlja obilaska ćelije
CellValue = List. Ćelije (broj reda, broj kolone). vrijednost;

// Zatvaranje knjige
Book . Aplikacija. Qui t();

Za zaobići Za sve popunjene redove Excel radnog lista možete koristiti sljedeće tehnike:

// -- OPCIJA 1 --
Broj redova = list. Ćelije(1, 1). Specijalne ćelije(11). Red;
Za Broj reda = 1 po broju redova ciklusa
CellValue = List. Ćelije (broj reda, broj kolone). Vrijednost;
EndCycle;

// —— OPCIJA 2 ——
Broj reda = 0;
Dok je ciklus istine
Broj reda = Broj reda + 1;
CellValue = List. Ćelije (broj reda, broj kolone). vrijednost;
Ako NIJE ValueFilled(CellValue) Onda
Prekini;
endIf;
EndCycle;

Umjesto da uzastopno prelazite sve redove lista, možete dump sve podatke u niz i raditi sa njim. Ovaj pristup će biti brži kada čitate veliku količinu podataka:

Total Columns = List. Ćelije(1, 1). Specijalne ćelije(11). Kolona;
TotalRows = List. Ćelije(1, 1). Specijalne ćelije(11). Red;

Region = List. Opseg(list. Ćelije(1, 1), List. Ćelije(Ukupno redova,Ukupno kolona));
Podaci = Region. Vrijednost. Istovariti();

Tabela u nastavku prikazuje najpopularnija svojstva i metode za rad s Excelom putem OLE-a:

Akcija Kod Komentar
Rad sa aplikacijom
Postavljanje vidljivosti prozora aplikacije Excel . Vidljivo= False;
Podešavanje načina izlaza upozorenja (prikaz/ne prikaz) Excel . DisplayAlerts= False;
Zatvaranje aplikacije Excel . Quit();
Rad sa knjigom
Kreiranje nove knjige Book = Excel. Radne sveske. Dodati();
Otvaranje postojeće radne sveske Book = Excel. Radne sveske. Otvori (ime datoteke);
Čuvanje knjige Book . Sačuvaj kao (ime datoteke);
Zatvaranje knjige Book . Zatvori(0);
Rad sa listom
Postavljanje trenutnog lista List = Knjiga. Radni listovi(Broj lista);
Postavljanje imena List . Ime = Ime;
Postavljanje zaštite List . Zaštiti();
Uklanjanje zaštite List . UnProtect();
Podešavanje orijentacije stranice List . Postavljanje stranice. Orijentacija = 2; 1 - portret, 2 - pejzaž
Postavljanje lijeve granice List . Postavljanje stranice. Lijeva margina = Excel. CentimetersToPoints(Centimetri);
Postavljanje gornje granice List . Postavljanje stranice. TopMargin = Excel. CentimetersToPoints(Centimetri);
Postavljanje desne granice List . Postavljanje stranice. Desna margina = Excel. CentimetersToPoints(Centimetri);
Postavljanje donje granice List . Postavljanje stranice. BottomMargin = Excel. CentimetersToPoints(Centimetri);
Rad sa redovima, kolonama, ćelijama
Podešavanje širine kolone List . Kolone (Broj kolone). ColumnWidth = Širina;
Izbrišite liniju List . Redovi (Broj reda). Izbriši();
Uklanjanje kolone List . Kolone (Broj kolone). Delete();
Izbrišite ćeliju List . Ćelije (broj reda, broj kolone). Izbriši();
Postavljanje vrijednosti List . Ćelije (broj reda, broj kolone). Vrijednost = Vrijednost;
Spajanje ćelija List . Opseg(Liste. Ćelije(Broj reda, Broj kolone), List. Ćelije(Broj reda1, Broj kolone1)). Spoji();
Postavljanje fonta List . Ćelije (broj reda, broj kolone). Font. Ime = Ime fonta;
Podešavanje veličine fonta List . Ćelije (broj reda, broj kolone). Font. Veličina = Veličina fonta;
Postavljanje podebljanog fonta List . Ćelije (broj reda, broj kolone). Font. Bold = 1 ; 1 - podebljano, 0 - normalno
Postavljanje kurziva List . Ćelije (broj reda, broj kolone). Font. Kurziv = 1 ; 1 - kurziv, 0 - normalno
Postavljanje podvučenog fonta List . Ćelije (broj reda, broj kolone). Font. Podvući = 2 ; 2 - podvučeno, 1 - ne

Da biste saznali koje svojstvo treba promijeniti ili koju metodu pozvati, možete koristiti macros Excel. Ako snimite makro sa potrebnim radnjama, tada možete pogledati VBA kod snimljenog makroa.

Korištenje COMSafeArray

Prilikom preuzimanja velikih količina podataka iz 1C u Excel, možete koristiti objekt za ubrzanje COMSafeArray. Prema definiciji sintaksnog asistenta, COMSafeArray je omotač objekta preko višedimenzionalnog niza SafeArray od COM. Omogućava vam da kreirate i koristite SafeArray za razmjenu podataka između COM objekata. Jednostavno rečeno, to je niz vrijednosti koje se mogu koristiti za razmjenu između aplikacija koje koriste OLE tehnologiju.

// Kreiraj COMSafeArray
ArrayCom = Novi COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// Popuni COMSafeArray
Za Stranica = 0 Po TotalLines - 1 ciklus
Za Broj = 0 Ukupno kolona - 1 ciklus
ArrayCom . SetValue(broj, stranica, vrijednost);
EndCycle;
EndCycle;
// Dodjeljivanje područja Excel radnog lista vrijednostima iz COMSafeArray
List . Raspon(list. Ćelije(1, 1), List. Ćelije(Ukupno redova,Ukupno kolona)). Vrijednost = ArrayCom;

Razmjena putem ADO-a

Excel datoteka, kada se razmjenjuje putem ADO-a, je baza podataka kojoj se može pristupiti pomoću SQL upita. Instalacija MS Excel-a nije potrebna, ali je potrebno prisustvo ODBC drajvera sa kojim će se pristup vršiti. Korišteni ODBC drajver se određuje specificiranjem niza povezivanja na datoteku. Obično je potreban drajver već instaliran na računaru.

Razmjena putem ADO-a je primjetno brža od razmjene putem OLE-a, ali prilikom učitavanja nije moguće koristiti Excel funkcionalnost za dizajniranje ćelija, postavljanje stranica, postavljanje formula itd.

Primjer istovar:


Connection = New COMObject("ADODB.Connection");


Compound . ConnectionString = "

|Izvor podataka=" + Ime datoteke + ";
;
Compound . Open(); // Otvaranje veze

// Kreirajte COM objekt za naredbu
Naredba = Novi COMObject("ADODB.Command");
Tim

// Dodjela teksta naredbe za kreiranje tablice
Tim . CommandText = "KREIRAJ TABELU [Sheet1] (Kolona1 znak (255), Kolona2 datum, Stupac3 int, Kolona4 float)";
Tim . Izvrši(); // Izvrši naredbu

// Dodjela teksta naredbe za dodavanje reda tablice
Tim . CommandText = "INSERT INTO [Sheet1] (kolona1, stupac2, stupac3, stupac4) vrijednosti ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Izvrši naredbu

// Uklonite naredbu i zatvorite vezu
Naredba = Nedefinirano;
Compound . Zatvori();
Veza = Nedefinirano;

Da biste kreirali novi list i formirali njegovu strukturu, možete koristiti objekte ADOX.Catalog I ADOX.Table. U ovom slučaju, kod će izgledati ovako:

// Kreirajte COM objekat za rad sa knjigom
Book = Novi COMObject("ADOX.Catalog");
Book . ActiveConnection = Veza;

// Kreirajte COM objekt za rad sa strukturom podataka na listu
Tabela = Novi COMObject("ADOX.Table");
Table . Ime = "List1" ;
Table . Kolone. Dodati("Kolona1", 202);
Table . Kolone. Dodati("Kolona2", 7);
Table . Kolone. Dodati("Kolona3", 5);
Table . Kolone. Dodati("Kolona4", 5);

// Kreirajte list s opisanom strukturom u radnoj knjizi
Book . Stolovi. Dodati (Tabela);
Tabela = Nedefinirano;
Knjiga = Nedefinirano;

U gornjem primjeru, u metodi

Table . Kolone. Dodati(“Kolona 1”, 202);

drugi parametar specificira tip stupca. Parametar je opcionalan, evo nekih vrijednosti tipa stupca:

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

Primjer čitanje:

// Kreirajte COM objekt za vezu
Connection = New COMObject("ADODB.Connection");

// Postavljanje niza veze
Compound . ConnectionString = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Izvor podataka=" + Ime datoteke + ";
|Extended Properties=""Excel 12.0 XML;HDR=DA"";";
Compound . Open(); // Otvaranje veze

// Kreirajte COM objekt za primanje odabira
Odaberite = Novi COMObject("ADODB.Recordset");
RequestText = "ODABIR * IZ [Sheet1$]";

// Izvršimo zahtjev
Uzorak . Otvori (Tekst upita, Veza);

// Zaobići rezultat uzorka
Još nije odabran. EOF() petlja
Vrijednost stupca 1 = Izbor. Polja. Stavka("Kolona1"). Vrijednost ; // Pristup po imenu kolone
Column2Value = Izbor. Polja. Stavka(0). vrijednost; // Pristup po indeksu stupca
Uzorak . MoveNext();
EndCycle;

Uzorak . Zatvori();
Uzorak = Nedefinirano;
Compound . Zatvori();
Veza = Nedefinirano;

U nizu veze parametar HDR određuje kako će se percipirati prvi red na listu. Moguće opcije:

  • DA - prvi red se tretira kao naziv kolona. Vrijednostima se može pristupiti po imenu i indeksu stupca.
  • NE - prvi red se tretira kao podatak. Vrijednostima se može pristupiti samo putem indeksa stupca.

Ovi primjeri pokrivaju samo nekoliko ADO objekata. ADO objektni model se sastoji od sljedećih objekata:

  • veza;
  • Command;
  • recordset;
  • Record;
  • Polja;
  • Potok;
  • Greške;
  • parametri;
  • Svojstva.

Upload bez programiranja

Da biste spremili podatke iz 1C u Excel, nije uvijek preporučljivo pribjeći programiranju. Ako u Enterprise modu korisnik može prikazati podatke potrebne za preuzimanje, oni se mogu spremiti u Excel bez programiranja.

Da biste sačuvali dokument tabele (na primer, rezultat izveštaja), možete pozvati naredbu Sačuvaj ili Sačuvaj kao… glavni meni.

U prozoru koji se otvori potrebno je odabrati direktorij, naziv i format spremljene datoteke.

Da biste sačuvali podatke iz dinamičkih lista (na primjer, listu stavki), morate:

  1. Iznesite podatke u tabelarni dokument pomoću naredbe Više ⇒ Lista...;
  2. Sačuvajte tabelarni dokument u potrebnom formatu.

Za daljnji rad s podacima primljenim u dokumentu proračunske tablice iz 1C sistema bilo koje verzije, oni se mogu spremiti u xls(x) formatu.

Sve bi bilo u redu, ali kada ga otvori u Excelu, korisnik odmah shvati da nešto nije u redu s tablicom, pa, da, nema prečica do listova knjige. %)

To je bio slučaj u 7. verziji 1C i migrirao na 8., da, ima napretka, u 8 možete spremiti u formatu xlsx, izvorni format najnovijih verzija programa Excel.

Za rješavanje problema postoji nekoliko jednostavnih manipulacija, prvo što svakom korisniku padne na pamet je da snimi tablicu u drugom formatu, ali ni ovdje nema željenog rezultata, tada počinjemo praviti copy-paste u novu knjigu Excel.
Postoji još jedna opcija, kao za napredne korisnike, - ovo je odlazak u postavke Excel i u odjeljku Napredno potvrdite okvir "Prikaži oznake listova". To je ispravno, ali je i rutinsko, u svjetlu česte obrade podataka dobijenih iz 1C u obliku ravnih tabela i dalje analize podataka u obliku pivot tabela i drugih načina predstavljanja podataka u Excel-u.

I sam sam se umorio od štikliranja na isti način i riješio sam problem tako što sam npr. preturao po internetu i gledajući neke druge događaje uspio sam implementirati jedno jednostavno (nekome je harmonika, nekome štaka, međutim, nema rasprave oko ukusa) mehanizam automatizacije Rešavanje problema sa prikazivanjem etiketa listova.

Sve što treba da uradite je da koristite dva svojstva Excel prozora:

DisplayWorkbookTabs // indikator za prikaz kartica listova radne knjige TabRatio // omjer širine područja kartica radne knjige i širine horizontalne trake za pomicanje prozora (kao broj između 0 (nula) i 1, zadana vrijednost 0,6)

TabDocument.Write(FullFileName, TabularDocumentFileType.XLS); Excel = Novi COMObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; Puno ime = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(Puno ime, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // ako trebate dalje raditi s knjigom
//Excel.Application.Quit() //ako samo izađemo

TabDocument.Write(FullFileName, "XLS"); Excel = CreateObject("Excel.Application"); Excel.WorkBooks.Open(FullFileName); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0,6; Puno ime = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(Puno ime, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // ako trebate dalje raditi s knjigom
//Excel.Application.Quit() //ako samo izađemo

Najbolji članci na ovu temu