From b6d2975408545a7a400402e5410a0c80d19145a3 Mon Sep 17 00:00:00 2001 From: antoinewg Date: Mon, 15 Jun 2026 08:33:43 -0400 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAPermitPoteauxImportation_Gabarit_fr-CA.xlsx | Bin 0 -> 18909 bytes import_excel.py | 58 ++++++++++++++++++ selectionElements.csv | 3 + selectionElementsMap150.csv | 4 ++ 4 files changed, 65 insertions(+) create mode 100644 CAPermitPoteauxImportation_Gabarit_fr-CA.xlsx create mode 100644 import_excel.py create mode 100644 selectionElements.csv create mode 100644 selectionElementsMap150.csv diff --git a/CAPermitPoteauxImportation_Gabarit_fr-CA.xlsx b/CAPermitPoteauxImportation_Gabarit_fr-CA.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b845ee1d2905b5ef43a7d5e4c60880a1a97a8493 GIT binary patch literal 18909 zcmeHvWmsL?vL(UY-GaMAaCZsr2@V@~cXxMp3mR-=!6m`n-6cS9*XEpayH8GTUU$FW z?`}Re@U1<^H`ioT)vPhAmVyizI64R<2s8)?2r)?QTa-zz zZtaKKp`cQ3m6oRpVdS|@xCCzza#B#L*Ue*+OhY$|5;Zv1(UXb&_mb=+f&Y#>C=3@h2Stk2Ps+kA`Ibg!=}DhmvsNdJHWm*i086MNb1 zYH2>6m(3N-z)Ycliw9!g5IMkP=nhK49xQCV{a(*bU{YS4T-{iIJ~fom@(C;0dB;UP z#|ddU+K3H3hGwG8{z#jl!V}5t9K#+5%wz187pvoV&TxV!Y-F9`U|a*9aM zYXWc7?wk^2!P{9U%%p4TD;-DMQ z;2PWCd0)5S_{eUG?Px9Of?)De>DTws8bp2^{2{?7s=VO~)=T1JdR(84N#ppa3xd1u zvFay8^lM1_G#}#vq*o%oynuly{KJ~jblL%+uhzWwYOHXt)~ss}uykN#_~ZRQR{THM zbbq?_ig;NWFlOZ76aN?D;WnNn8j?v%MzMWaqo+5_X-|3_X|aW0o^Hg29P=6o-7~9P zvfa|IjB5*A3y?jWQIo}B{4AVP!jCLqmCrI{YWg!4$H4tqiA;W=CAm} zD>m~38OUFJv7IE;zWVbuYngFsB-vwsxRgdJBiBmWAqZZ>RTyFWIw}dx;{cY=f7^Q3 z%FZEMWj5q)Gf+fI8(Sm1As8X$ho_wV6N?EY zC2{hgbg-=5yCY5rU~8e61Delrnz-j4Q!5M7Ck<=Hf&3fh8a~5O^)U|A(bd}f-U2N<37ljpJS&-8jwx$Xw8XW zK>K7HOmzB0neu+R<+6jNB zk`)$RucrySpn#x!7pg*uQ#l>ZyfWSYl~WX9r;?9I^c)?&M(aEtkgvs2F#{HA^lnB_ zx6<{~wW+Kdtd_{m)E5Wo2}h8#PK(dF?g~rhgQnN>uu^Z$p*>_kEoe8ex^wifm!G8c zxVg(ViqNI$u5bhk{4NzA!AXVr3-vrQ1Eyj<$re~S-tkt)Z%}FmK~CYv-$`&si{y#x~m-nG8a=N6+8i)wf5 zmb@qiMEmwQCcnkLdgI!n^rHM3qI!ZW-6YkRtk2+~^XYXRb6PC>1hL40V5Ib<_qo<3 zI+_-mNK#7Us=&`0aKvS-_4)Bm{*3`ZbnsFI%i+4>^0e>ac{t;hXB8D*RaA-9UmBDa zC&Tj}4@q)#`%ZA!3bxo!D+!<@h!tIg;E*ACZY5y7Dn$x3^3a6A@=oY#Dae^Er|1GAowU1v3IsH zS+C~#il{k5FV86ZfvkeDxz&l=$1ntZUpu{zj1Q%I@_JvsN8PkemY4nj#dRF4zJ}V0 zq1AgIYJs0;2VYnEB>gykp@im)Oc9*}Rm$2Gi*)2JwHqv!>gqiP-BvKI+a_4)^TBG3 zp>dZx82rY9qUDr<)FC)iwXkZ{`=iw1x%h|O2_89UXUcB@R#!!nPiRI%9`2lk`u!NA zZJlR*XmdCZ*@uPRySrUfW9MW{SIjxl`!7v`565BGYh*pB(^XjU$?~V<8Fc_*)haSl ziS>tUOVmiTqc>t5L=Y-2{#j%&UX=Z?jM#B>BLSOH6)-+`1BVuo_bZVH?=IWS?z{=p zYUV2mF;jZFKg+#MXGk}pIB8jV*>#1Rm^%{P+dLNSySz8IbILyfwBI`GW**?{l52W? z@!`$s^Pyj7S+Wumklk0XWxZw*^GMTr{H;;16`D}tzQ#c#a1an&5a>6rM*UYP{Moes zcUXM$y19M*?EmanYoe@04-p! zGRjm7~7g6v0DHVrtZ~+nDRQx;k7+vs2d8L&5XK~S6CB|G9 zevDjWe3aUVugVy$%Qa|Sf2Vi@zOEYe;lAJ5RJaHzCj*;To||w$L>tH!J-1$r%gZxm z^dM~8$f%aNiDpz>@uD47_CfIFRT+;~Hm@>v-5ks}(EG-T*HMrN_RfU;b` ze@PNqjLA5Uc)FY`-BAh`R-_wk0J+Mcn}LN9S(1T?KiGJ{oInKk1W1+$(N>ZgY0in3>q zJ~>b$A=PpR=tJwo$8JhU7WE(gL z6L3lU)|byKwqsxGmKDnAh>Tc7@rusO z_-g_om-ja7FgtDZWXoK&t!Ncb;u^Mr-*-?0=p#ffd9WW6j*WI3{l5pSoi7~&XL@cD z)b@xwpY*shoX&2Ma1jh4c`E8^!L@@-Bcb5lauwv2=DdwO-dR{yGP)B*!=;AhXR38{ zW8m_c4R^R5g2-osO_wD3>U^0^Ar*?*1V;Wm#5v($yMgbOIY#TlsywM1h%tq+Kyg63 zCZN=?N@ZK2E~`FBR!EQ&b3Kr0WW)3AEGg_h3i#8}0K^%XxJHv_v%TC{l2nKHK?}Zp^$ZR>!U) zLQ0|e!ENLWaXvT(rNFhjF*ovd43PE3(whP9pf+Z&)>`}eyVh*^5P#0lz0<;`G|eY~ zi{9Iq448K_uB=!exI}k%D}{2Q(?x*i@1U1mM~FW(LsBowD1PG7oPt2HNS30_qn%<{ z$3ztqu(L{~%|4`f?)Gohb{Rlk+HjwzjA3Z-4 zjvQKfT|c*_Cbe(gv32Wkd7tsszWzPOxz+;;HNC18C?tO<7Jpixqba}&!1(9;pT>9e zVI&5x5u*dD|3z?Edv6UX(j`$m%Xwxm>Iu+FHhpi&Dh`Wx82X&FCIvk4i$ zRd=dzNK;?P=It0}JyO}1P+oiS^o{WFwr9b30~bct=@Y)^-L}3yju?lVg!0rpI1;iQ zsX4ggTSAh7$T73pBX@a`%60jyJ(D;!=rX<+tA)yT>Vg z7pkW*VT#-#$c_j1{%DJ02+?SunFZ$w<8G*i;MJiS#VpI4xQ;!||AB5lGB-@^`^pm4 zTjnO&#Az^Aicz4sffV-9BkwqLb21pkIE1k_(r((t5KOZYp@9a?ZQkMC?pXP1%g3)! z&B)3gMl$w>7b!zKpcfb8!_>)BKMJ3zEaw6$y}|U%u{g{RUn=>*I_q$F&At^?u$rMU*M)MTt_jKba1lt^~dw9>EOw+Z# z0o?8)w(}pB8 zdW(Z)2x3aq6HXynsa)I18oH@d)+8!IqZ~X(C~enG4*#H!EVw`OWcy%47mWnXAZ4M` zDS8ZV#xFSvE~`4{0rH^@b$f?nt=0AUDq`=&?d&TSWA+Oi!33a?MKyVuSS}gR{Py{| z@8#*rWxwO)c?n7Pc_1nU@L2Bi{5;dR_LS(ZVID-S^L$sXuIqDk&ggUd{8pD6cmtlD zyn%*`7ADtE?mlejDrg9sA&?fHA@!c*Jv|J*pLNJVTsYnO04^)mXL(CBevDXvR_8;x z3Fcg#WCgm@@FP<={W|kr#aPf32-1}nIh?%Oz$9O@Mv`3&bGz*bUuW3P`UFkTrL;B; z6iSV0HcKW|D;bQU$+Tu;Qoy}OPN%pd#Mm8jg0C*1()HouxBN}xI>`g;K7 z56uEA+ho>cTv|T|?R0Qx8dfvptT<}>!#CH!lU;K(jDWLR_><^Sq~?>Ve}O<5dI}0% zRgantS558vLDfe!Apm2@o^Zi6!Gd3mRqa>NaK2%KF!$rfY zjO5bIfempu>`yB8vW;f^m79kAV~bhE9or@pi5eJN-e9=$3!K0*m0;_JbDh$37Z@l_ES7H*G zOA7VwUh9F{;p$tI4JiW#LdIoBH2`F0rh0Mel279cjW1{ zNv@H^y||Tv9xig^_;10}%JGwUHvTJg<{5{M+LNWi@Zb3N<&8A6sk?jRlxF9$qY|# zaW$Kt4dUpK$&%+ie0(3W9Ev&}&ktjm<+Mo_K8$aT%KW-}DesNLC@z{Ar0Z0kQ|XYi zbe-D9Rk?OU`rO`iq6%iDW2w!njcfi`@OQ5p603t~!5AH!x40^!Z%vxVud@!4wU`k5 zsBI-T?Nn)PJc~G#y;!JkNZqtpPXZi(2%hBP86L4`+)krSQeU(UQuB9iTf2|a@j_;Y z#OPSTRz0ZyqHD(CUN2oWQ36pQzK-;;u_q`mW;fp7?up%FhWv4FO(69w%Z6xk#BVMO zC#HPab4%gfD#w~2_{OshQD>YWEk49mH5MXGfc|*JbdP@Br1gw@lF&SUFyA~dV{3Jf z@C(y=t^j^?UsUxZKFH_e8{8zF4)zkZr2=nGMDeRUq;=1SX8%U)EC+{=okbf?ClbF6 z^m};ANQSRl?aNnX2H~$j@8IZW32^vhf8DC~F=C4y-J9`J0J_b?^QO1!nxz>VvOz|_ zxVkEw-lTUhJ}yb~6X3-o#)#+4(PoNz8r-pv)N79ii-6pN1BlP3Ji|(Df3)U`t*AJV z9%dN*;!2l=A>KxjPoV{yzQy|EtYvdfw^k>I%gZ%ih13_>D>?^wJo|Y`T^>mO6m?Vr zB1@_&!}fk=;s=kI)Jld3y$jfw%yKf5pG2V3$2Q19@`I^T2bu+E(K@iL_c`>K;#T$T z01g3_7T+CA<|`h-QxCnQ+;WM*0TF9D^rM6m#8e%hds_Px_kd>sd#b| zsM9kdRfIMG1CcWAmQtMEqN$+j(XEjhno)fd?WYJX+wgc2PAXi zijtf=t7|shMU-XbWL+saAqHEHgcov!ILC)L^*~w1%4-9MN%P3uLMpCwFojMi*ta#% zVm*th1~ul>LIXrdWnfwv+s{?N zl1w_sVJK=~B9-6N;I#M|DN!bfz3r0t?r`~aIN#OuCiUbcSRg@VXl#9kkgHj;zMWIo zG-z7?3X7u6Qck`sQ8YX9%T1TUh@LDHnU z2WD`;2)UFJdxQSuQHKxc+}W`m+hNam;4Q^7MvSAI{sJ1bZHQ%Bed@7D-yu}Pd9aKQ zL(dzlKgH0V4kjlj9o84CfdN+&q)7IJ-Q(T6P!kPP8q2@CAQk4uG;kMzH(pU@Zgs8; z1!R<~KcU<9QV-zfQ__4siuQWTYhBPWDtSH@D8&`4$Dc3B)i3tr+}A+p(B(SY!V3|+ z*lKv_;u_|6M3Mp$c*(w!X#Vvo9Po?!Fa3lTo@LO*jsI|mOx?sC|yw%(lY$}$JNf#biP=)qxuW)jBbr9&|cepQN@ zDA_6S{m@camA5OE%5`pi8LyrX!}av09a`S`#H_R5;tgS_#UMvfs_T_J=qu+OtR)>FLy^fKRrH%b?p)RCCSe z5^r1x9K18@CA0s5_dYMp0zE{Nm}3&E-G;~3m1dx~I~)|#7)ViBpXJq+pom?^7K45F zr9B}+47m$_YupHqA(?4LqEhb0Wy(PnjIiNd-EdLB`btE3p=Euks)y$3vma~o&GpE| zY2GADh z$1#*!#NRQpEzp28_LYfCuit1OR3L^<4vscf8djE!W{v=>KNSU{d@>NKT%y+x{NG=e z(L9LVOvn&b{*wvx`{SEzez1x=px-#diz?>M8Q!iDLJ9dLx@Q{`I+L|J;m=4ANS|kQ zp_$R5t!m>7tDORL`XJkICCuP!Ff5BKBfW08j;4Q* zoRM96Bh`l>u}Y{r>LmOil2HmBr@;lbIi5aWqjDg-B|FEmY94i>;@>~CIG;WU)n2|w zl#ir<1tYlsKHsJ8MORl#RetNHu5PDkq`JI~l*cXl$(XYv-$R{Ub<&UHJ4jJ?^}`#9KU zAOQWQ!^Jt}Bqcd<$|0gy&|D^SVPPR{A#Dx*;5roRSjIp?Dh zWw6XBRW5_Cnb$&T z$$E%P>Q7E~cdJ>8CNx?`=Au>&CA82NMp$Bd5B_oLZkS1BO0cYwla+wgs zB=f_JU5$x^ic_)iK`<8w1$NrKr$O1ErE$sNv>GtT+R%jTE^bivTMY0LD(j`Q9@gIk zm0v(0hwsot=vFYPB>Lsz4vnKz#UVuUap9>HZ|}SdGMXv8fvWeR^J?H0W|)n9sqT=iL1W7j6mgtqR{%osdqI;gK(dB#(n|ZZWg*Zfy3rCo^q7>xv_cY2?E5N&PoAFL^^0J` z+%rKiZ6D?em#B%$%hjq2amkX!fjI-{*cSxeIrrv~&-h&18;dmHE-^68Ar`0emlCY=zhv4{~4hY+|cP-+_XvMF0#(?^$4L=EhCqz6o!P<7#2 zBR(-TFpW^+DiOIA>^YyY^v_!lzZgXLW^}CyrEY)d(b`2U7+-W=8cN-zl4=47sOK|3 z(1mrek=3mg2$x_{8hl@nGE>}9lJETj+r2{WtZ*d6e@QP+sO*!S<@rhF+v<+n*x7WQ z_e&Iv1}Q$ByzF(dhVk~jT(yLej6==BEoKmS_Y$so0F!UYa<%~Ur;JK}XEH33;T8y+ z0bbD_q7Pr%qmatuAg>Zm+zDCu`fKX8=ba1MLUdeZ6MI#ukt$GQDwGCP$L$Xn*@MgI z48d-A5xutU_zk)NkVsrvArUajp`<048kb4$(fwNWl!kIZ{oO!&v@1o`uEY;ocX-Q1 zN`y~+`O^e)&QCT z?8v?VC*PDAtlh54pr&~5-72A%D+vNVXkJc9N68|MOq;GnJD1Jq7Za+kN7IxwkCue^ zAN1NthS23#X^O3u^vQs3ue18&X|7lIER<2oHCa8*EvW-a}KKKBK z1^(Jm9~exWST#NK$dt7ZR}{TD+s+G=a}w@qf`!HGm@Y2om2EoYL8GCBswnN8;#g$y z>-553rza@l)XShAEohLi4C@oaxqgE*n_*_#R1A`i9TNn@a`JiCrArKB-d=Q>Sq7>I>ovz-{}cFvQvmG?zu%f&Dbo>y{>?8^IhBb z6@OD~=;!-(9b-Le&U^Lr$- z&BDoQJx{Kz&bi+R@kF82$^|Dn^E-+(a6XQ&HOzZM9G2~RLv#i|in20XC19CZvh|iI z%~3U4`Yk6UYoh)jk}`uU#SbxUOlf2)r{*ns|54QoDHFpbkv;+}fNAf;9PL_zAh+gX zP45?DVSa5*CuGM*ADX?79-hsc?gpj=_;{%Hrb&AJ5FhSwi~OrA@$Qn#HiP+1iY419 z=V$xNC1j^0Up$1Z`M%%_vkFb>YDWurq!jRDB&M{EsOpq%Z*HSz(U|wgWu!LViu4er zx(bU!rE4frq=ruHRpq7W;7pp14nt1MID#UFhqRvY#+&x|yfYBV8^67J8$A+Yi@BE! zaYvjONe!01#QZ%55J@k46-YdmBWA>{zgxgfb^e4}wLE%`QokIT7tbFIi#4o4Q%B|B zJ2Ldxbvk*zubS-$Z3-ia(@t8mKo1k#s2ANG;nK?cSvxTsPYC9zytH(;JM()jY)J^O zqKb$(ZZ2W}1iB0d9YHP@A}}$pwk&so-PJgC+&pnKTIe}kW8UqX@tEdH!lrB<$Rj#< z%vrncoBpThFZRNGg=BPvM{7e9?uBSc)I{MzU6yE7qonKthzTb#zRNSgXCic1Axkkv z_*4Y7j0oOez4b4LEE}GDd?<@$-L}CB}Oj^MI~l ziOBJBCR%nZC`DU%_&O1OB1))c;uh}+S$z4jh6RUqalT=6eRX&uaF+R@7@_0a`Fl42 z&R~GLBi`3L=HvClk-0&vg(9s`{((%drwz6f(~OYD$|A9~TA1!=HgT)8kj6Y(=!R~t z>5WgQ#Y?=3NJA}5#1i|R0C^Z!Yh`z&Pi!1o!HF44pNDqyV!4r+OF$QY9NZdGr#dRE|_sr|zUfZrd916N~=7&1G+XB7F zUqbppbzEzs@sy(dlvAIcOY1?)m-B^YhF2(ioGtTMV z;cUqLcqrCpP%i;zBLO0bBmAF629%n$zsPGSvv{@FI!bGo07E9(TlJMb;v9VfBHepD zRYqWH^5_MT6Hr2_~)D#mbogUmI2*KS7uiJmHQE#@M!|3{wsd2Ie9LZvFU{l+g7Rr}*b7@*pYYq;Az| zaY`fOJN~936_=cqiXAW;b%`X|X#cCN@!Sl*S`}6D{$l)3_Ct8MWlhHNa2lBs=1jWP z0s0?&F{9gh)Vl|QHUF+WLH!r$-hV4e z0VaO5SY|>FT7!E+5 zj)x8NGm6T(uH;MWD%-Zq?B_b!tYV<$*1M5Kl7bXK+SImrg6`)-_QAyiTA0@QYnIQ% z9=&Ig%#_!;O>iU7i#FHaXrjH%T!t^((5smZlyc+96;+s+-8`H=LDr@}xRrQAwRwEW z{FqVUxtm{D{Vk19M1Q)VE1(*5`@-=(cGT+e^#yd`6YI>x{Tq5|TT5qil*(l}=;Oq` z4O?iW@9`l>M8+VJv?=Rhc~}|IA%(^IM82<#)HWzf#2il_LKxeX#y_ zQrN;od7Dip@9D@J0C=El-U$rA7FrbzyBg25 zHQo-6t@Dj>mpVRd+QbTleJE4N_)_tHt03oS4=(o-8NNAjGbTCTtSF4hQKz5}dzbiz zLm&1_uROXUYr}bRN(pI4A;9n+fqBuJ^03_ch-#j`!TP6Ao3wRVgTjvvcaP_z z*MY!jX~;dA5$i(+GWGN?&YJ*Nv8V(+Olj@{?udh0#n+k$M;V&$n8hEp+hLxrX&|u1 z=~SwCnBVD?%2jV2-bn0<7kFEAkaRUn`>F|Zw^A0^((WobV%Qr)LC@`=IaM<;Wsjsu zNTP_ECA*uYO6X_>)})AZ^R^F2p?q>oz`&CFq~6MT;QYyx#u2ST$1k%s`^mS>H?LRT zr>5P}@M=tQc}qfjlhO0#h;7jswTa)nX{zxZA6<#z55u`Esn}qTt{ha!Qgt%L zjWf0Z=m_Edi+$l_f-TL#9y0y$UfCXYI|U=+FfPi-*wB}h@h@5d-v#Vj0YjfhxV$N& zDRj|3q>N2}*=c&2di3F0{m#@5)Vm#9D}09dow8x`z7VK}1{=a?QF|bw#RX6jqP_K zu?^wii&~3uLz$Lye@vNW=N(wA6^Y=5T2s3bHMhBt;1DVVWeVyGbo4M8=s*a4pzkPYqz+FJ*w+>6-+2X`n(ILYwj>r zto}6g8d*lJO$01j)!~L}#_&k0ntLQNev?PK-`J(I-IO;hGs!S!8E8(D~^4MT}_Yk?ozT9nObb7YJBZEJ?5v0^d5{E_0 z+$TZXa{KyE|97G5WCb{^@_NPMRklZYEvGfIG5k|3WHhv~2mIwD!2eT4`|4l=e{|Y9K&O8+{mmG%SjtF>c@!j=B-+9;I{N zgB}*DL6As=lPGAxm9j&)mnNTKglC#aSAU?T8Yjg6keGtS#gS<7T2O>nt>Yg7D#bM@ z>({V~7hbdV(KJ=YUj)Lg(yGT(V-bNp(x)0>olbVI>CG7U1-wh=JiMr*C@eqG$frsV z-*s$rQ$e>7DdE$Yxd5x>94L3dwq@a3#`t$^mto9DBE;jYgn$~WrNXRBW?^stH8rF$ zuNjRpYc+g@G&s3th~0Yns-UFzVo42{TG0~H9ADG9I$*(cWso@@&a*X3^ZU4YLFVya z*um{}w|${df=n+JwhLS3tWV0wY3kTA`l!R|Do9wudetww@0|on?_SVlaCtM ztHw!nDzXru$otlgc|G$D{yt#oOTi$Ay;2e7)iWXgOhtWL+y5}}m4g3zWyTBHEHS|c zoq*lHgrOwMmbwda`#JXOsN|V2Nw8!M>P+2s%(++nQ`k1pRJ0#U#YOpbHO&xYG!ltU*?{+`l< zpvCC5o>BR#C&`sbO`e;E9~`3nM47$@_` z;gav49SI)h3tq)!)NX9!J$lvFE(x4wxeWn7jOh(uybwRm5jZbK3r~KMR|0Ykk>Uo{ zWT`P1qjgG_NY7=N8$Px&24INK+NoX?sF8fb(m$hU?ua0aIu5eSs_rLEj5_OT_LdE; zL=?8?IWyZ~jbe}Id7GZRU;Ld$asPlU$Ug85oupH(+)(bzw+;DKcUvE^*)O<1j)tBm zJyyu>{dE;cwblD>D^vHxm_yt;8}tbkay60VdH^7_AjvhY@KZl{#Gf>VnUu8dXB;Xs z=Lqv!7L}nI`LC;H)4)g9aX=DBOvRNy7%4E+Y9?FvkOy`WjpS*`siQPsiEf);$#;C8 zIT4yB@If^`kF*YGSsAHLce>vao(NQ%rOJtC?ti#p$rlI5snC!cS_vWV_% z8?8KFl$|N8Fl+Yc^|YK;8hgkn7r!ErC5BtmrJnS_N!!Np*-G$6zf8o2= z4;K8H{r`sr|73yrtJ8s8_sBcZbJWeeW|9t@lEK+#7l(U2(w2H}IHVzMw&q>@2@{e> zT6m4|U5H2O3<9f1I3&9&0&GFSYTrcX-Q`sc*jEEX8UTPZ=Bo<;~zU@ zd)5gE2k74vJfh^SbPI2w?w-64i?F;1HRyy3HnI4aXimiEw~bP!v;ed2O59TfbS0)T!pMPmA$3Ir^4A!$3&-) zP?lWn-1~mp`bvW-BXw!hb$|Gf4YMhqb@L*IGgOxHGBWn+(CxO_Bh1KTyus81qhi#` z=~~yU%7+HRs|G7wr{;HhO{_DVI8mP=VoP;Paya%?~gk+Ui;SmiV1H(>0c}Le*d74pYHX~Uw`x14+WWj0{rvY z0zU(czV5|;deXqJ1ApzX{(I<~*RqOV`mKK*{LfC#zlVZ=%)WNu{nve+zvBGbxA!*^ z(`&iof7QkJE6T6EM}MQ#BLB7%=~sYXYnuNC$aw80e4WPM70$m7{j~t|@1fNAe+~V$ z9P?L%UuzHlMzAILbq#)7iTEqvucdr{1KJb*3HVDP-){^1eg*w!HP+vdARyqxAit~4 z`W4`xRZc$x{P;J3ziXa;MfqoO&(A2lq`yw%&p7%kz(3XZp8=L%8{7Wgl>M`te_<@lPr5X8=sLUjhD{#&1#nsQ~?qLeBo$X8o%k^y?)4nYI5s zyqfc;;s46ve;xhLr0M6;HatI#{%cA9NTGfO_~(xJXMicbpV#1b`{Q4+{<*LE8EZk{ q_gH`LvVO(-XK?-*YhCE~Sbv9V1sMp)KSp4_eyzWT{ymXD{`y}f9_%;( literal 0 HcmV?d00001 diff --git a/import_excel.py b/import_excel.py new file mode 100644 index 0000000..3b5f6a2 --- /dev/null +++ b/import_excel.py @@ -0,0 +1,58 @@ +import re +import shutil +import pandas as pd +from openpyxl import load_workbook + + +def extract_coord(url, param): + match = re.search(rf'[?&]{param}=([-\d.]+)', str(url)) + return match.group(1) if match else None + + +def process_data(source_file_path, destination_template_path, output_path): + # Read source CSV (semicolon-delimited) + src = pd.read_csv(source_file_path, sep=';') + src.columns = src.columns.str.strip() + + def build_address(row): + parts = [] + if pd.notna(row.get('civique')): + parts.append(str(int(row['civique']))) + if pd.notna(row.get('appartement')): + parts.append(f"App. {row['appartement']}") + if pd.notna(row.get('rue')): + parts.append(str(row['rue']).strip()) + return ' '.join(parts) + + # Copy the template so we preserve its formatting/styles + shutil.copy(destination_template_path, output_path) + wb = load_workbook(output_path) + ws = wb.active + + # Map column names to their Excel column index (based on header row 1) + header = {cell.value: cell.column for cell in ws[1]} + + # Write each row starting at row 2 + for i, row in src.iterrows(): + excel_row = i + 2 # row 1 is the header + + ws.cell(excel_row, header['ID de Ligne']) .value = (i + 1) * 100 + ws.cell(excel_row, header['Province']) .value = 'PQ' + ws.cell(excel_row, header['Code barre']) .value = str(row['codeBar']).strip() + ws.cell(excel_row, header['Latitude']) .value = extract_coord(row['lien map targo'], 'y') + ws.cell(excel_row, header['Longitude']) .value = extract_coord(row['lien map targo'], 'x') + ws.cell(excel_row, header['Numéro Électrique']) .value = str(row['tagHydro']).strip() + ws.cell(excel_row, header['Adresse']) .value = build_address(row) + ws.cell(excel_row, header['Ville']) .value = str(row['ville']).strip() + ws.cell(excel_row, header['Traitement de poteau']) .value = 'non traitée' + + wb.save(output_path) + print(f"Done! {len(src)} row(s) written into {output_path}") + + +if __name__ == "__main__": + SOURCE_FILE = r"C:\Users\Antoine\PycharmProjects\excel_import\selectionElements.csv" + TEMPLATE_FILE = r"C:\Users\Antoine\PycharmProjects\excel_import\CAPermitPoteauxImportation_Gabarit_fr-CA.xlsx" + OUTPUT_FILE = r"C:\Users\Antoine\PycharmProjects\excel_import\CAPermit_Final_Output.xlsx" + + process_data(SOURCE_FILE, TEMPLATE_FILE, OUTPUT_FILE) diff --git a/selectionElements.csv b/selectionElements.csv new file mode 100644 index 0000000..3ac6d04 --- /dev/null +++ b/selectionElements.csv @@ -0,0 +1,3 @@ + id appart; idGouvQc; nom; civique; appartement; rue; ville; lien map targo;tagHydro;codeBar +;;PHD206+1 rue Principale;206;;Rue Principale;Saint-Stanislas-de-Kostka;https://map.targointernet.com/infrastructure/map.php?zoom=20&y=45.177910&x=-74.130135;R6M9K;5NBAZC +;;PHO182-1 rue Centrale;182;;Rue Centrale;Saint-Stanislas-de-Kostka;https://map.targointernet.com/infrastructure/map.php?zoom=20&y=45.177700&x=-74.129883;Z5RL9;6J1AQZ diff --git a/selectionElementsMap150.csv b/selectionElementsMap150.csv new file mode 100644 index 0000000..57758b4 --- /dev/null +++ b/selectionElementsMap150.csv @@ -0,0 +1,4 @@ +poteaux +id placemark; id appart; idGouvQc; nom; civique; appartement; rue; ville; code postal; lien googlemap; lien map targo;commentaire;;tagHydro;codeBar;poteaux_positions_id;poteaux_compagnies_proprios_id;poteauConjoint;decalage;isolateurDommage;etatMT;etatBT;ligneViseeOk;ecartBtOk;fissure;fissureAttache;pourriture;dommage;inclinaison;miseATerre;classe;hauteur;toronArriere +68560;;;PHD206+1 rue Principale;206;;Rue Principale;Saint-Stanislas-de-Kostka;J0S1W0;https://www.google.com/maps?t=k&q=loc:45.177910+-74.130135&z=19;https://map.targointernet.com/infrastructure/map.php?zoom=20&y=45.177910&x=-74.130135;;R6M9K;5NBAZC;1;1;1;1 +68628;;;PHO182-1 rue Centrale;182;;Rue Centrale;Saint-Stanislas-de-Kostka;J0S1W0;https://www.google.com/maps?t=k&q=loc:45.177700+-74.129883&z=19;https://map.targointernet.com/infrastructure/map.php?zoom=20&y=45.177700&x=-74.129883;;Z5RL9;6J1AQZ;2;1;1;-1 \ No newline at end of file