From 2285d74af8641fe5f33e153917ef42dc00536d92 Mon Sep 17 00:00:00 2001 From: Raman Shekhawat Date: Fri, 15 May 2020 23:12:30 +0530 Subject: [PATCH] [feature] excel append row and find&repalce fixed #13 --- example/excel_example.dart | 25 ++++++++++++++----------- example/output.xlsx | Bin 0 -> 5528 bytes example/test.xlsx | Bin 0 -> 4789 bytes lib/src/excel.dart | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 example/output.xlsx create mode 100644 example/test.xlsx diff --git a/example/excel_example.dart b/example/excel_example.dart index e5a952a..78afc37 100644 --- a/example/excel_example.dart +++ b/example/excel_example.dart @@ -3,11 +3,11 @@ import 'package:path/path.dart'; import 'package:excel/excel.dart'; void main(List args) { - var file = "/Users/kawal/Desktop/excel2.xlsx"; + var file = "/home/raman/Documents/excel/example/test.xlsx"; var bytes = File(file).readAsBytesSync(); - var excel = Excel.createExcel(); + //var excel = Excel.createExcel(); // or - //var excel = Excel.decodeBytes(bytes, update: true); + var excel = Excel.decodeBytes(bytes, update: true); for (var table in excel.tables.keys) { print(table); print(excel.tables[table].maxCols); @@ -46,16 +46,19 @@ void main(List args) { sheet, CellIndex.indexByString("A5"), CellIndex.indexByString("E5")); // Remove row at index = 17 - excel.removeRow(sheet, 2); + // excel.removeRow(sheet, 2); - // Remove column at index = 2 - excel.removeColumn(sheet, 2); + // // Remove column at index = 2 + // excel.removeColumn(sheet, 2); - // Insert column at index = 17; - excel.insertColumn(sheet, 2); + // // Insert column at index = 17; + // excel.insertColumn(sheet, 2); - // Insert row at index = 2; - excel.insertRow(sheet, 2); + // // Insert row at index = 2; + // excel.insertRow(sheet, 2); + + excel.appendRow(sheet,["bustin","jiebr"]); + excel.findAndReplace(sheet, 'bustin', 'raman'); excel.setDefaultSheet(sheet).then((isSet) { // isSet is bool which tells that whether the setting of default sheet is successful or not. @@ -84,7 +87,7 @@ void main(List args) { // Saving the file - String outputFile = "/Users/kawal/Desktop/excel2copy.xlsx"; + String outputFile = "/home/raman/Documents/excel/example/output.xlsx"; excel.encode().then((onValue) { File(join(outputFile)) ..createSync(recursive: true) diff --git a/example/output.xlsx b/example/output.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..73862f3860e81f317a7f136de5c6f09c00a0c202 GIT binary patch literal 5528 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 literal 0 HcmV?d00001 diff --git a/example/test.xlsx b/example/test.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..370beebfe8332d76d2f950376ea5a5ecae5e0a60 GIT binary patch literal 4789 zcmZ`-2Q=I5+l~=x)Q*>wDkVmhm{pD1wKp|_*ri5dl&IO*ilS=IBDK}3Ej3DQRa;T3 zcvY>^+F!gq-`jtE|L>P`@|>KL>rS5QzOVbauSZ*rh?oHY09*p_RF`Yp6=7-@@t^Jx z0ss{F72#&<woBQjmj{EQDO@$FGoWO(ElbIx2(9m?k@GKf(FsojP2QUZZ2CgKoX@u!THbeit{H z{J{KGp|vOJsvy#x{9#uQz9i^AQ^HjPEp*8`JSspc+YB996-P7p1+cKgZ2$C@SH|e~ zw}<_4gEy|D3V81VFh?K4(08v>LOKsILj$5*)r=UdJJtV@5#NfoM?mc34c)55eVB2D1F|VG?TA+wvT6*RDA% zjinq>;d|mNNjHV4E2_^WG0zKo-V6>fLAZr_*JRoyz`#M-ek#~-XhmWh=CjzUuzBFp zv%1^!0XdQdS-xwz(p~9>TUSl1>10ulS&ssT_dB0hc>B>F3*B=}==c;qk#a&@j;mjj zH!yS_E%EFe?A@w&3EOX}yUnyifyj;>>#G?3=u{$bMHA_oZtg=r_a`xKHBVek@T5fI zi-h(+iLpky*`71wtgC@+gHkqc8tT{Au7xFQD+E<*q=$-<4Pj?0I})5Uz+6w-aEK{6 zQgH3W=E3CPwv)g9BM-p3O|Du37jLA@?mcC*7xq==9eND62dga}<>n}GqwF==>^{-V z8lkJA3D&vlcrH08)$x89@R5gl`jST0b3#1;wb2HBVMF&Ppr`G8Z@p9RS^+c3zA%3y zwie-gS(W!WH*a#f;V&8%`ODmTqV39XCLVB{sl8qzVr(^e#^hI)|BCsM_Fxi}%57_wNSYijXNtDciS{ zX7Fe--rKV-n)dBaM}$gGsnTe@%68@EMsFq+hzOE1zPI>E*!0gGWc@$j|<-MM(&@hR30Kf`b7o@&N>YCPHiL z;PD510=V#r0OMD*li)AGdLi8$t&m8^^JM%Z-qN_<^IBE>aX>C~^!O`-DsN&HZ-~?G zPXPO~oAhwHREN}KKSdK0Qn@vbUhf&7WO%ve$AXvy^d)n7gM{q&(?e7(f)|+;l zg3|bH8lt~bwaD;5lPQ6)Zgs(wSjb>yQzu{LQd}bZ&dHB5Tjh@qY=>6Hjm1?fETwj} zuS|fXuQkCLm33?tfNE&S$aI3AU(aJ}Mv0|{&pr0alguoQ8Mrjo=$YltuY{82W<7iz zcHmG=eQo#gTbJ#75<16N92{$N9Qn7}3;;&O(1@2hM(%~iVbGehAj=+IawF!7a#?Fq zD_K|0{j&II>s@1B5X=ihI4hdvtx=t1O2#;VaFCw3wqjL_6fV*zW1Qwht#RA6%psGAec&KfE8kXOyeoGxSYxCY(og zySxu8_IJceN8SzTW@WQv>z>uf0p#hkyT=?9C98x=LEEuFv#(T3Z`u-~7ggE_mkz8Q z^?M-ne7yOOR@2Z5nyOSXCsV9s}DFyfO z>QH%-j&7(`K=kwY`Vg1EV_2mH(zeIHiH$3F8J+MwUJDY zne#}+eOc#K@TUQ~Z7=(^IG9}h?T<5=4b1S4_2&S^V>oqT-O*#r{9b?GMeSHrMGBqa zOU9HA0J!|CWZXTxoowCDHM3y^M^0a3@SiJ}X)4#O6oqq78%%e9G{-*F$XEGzH9Xo` zpOP_F{9E}PfmKp<#^Vop^}2_#Z9=}j=@jYmzD*7i4OmqXUOJdmvW0@800pFo7$H#g zBMUkl8jeBn+GFk%ZMz-{jA0kQzr>DQlcAAptr6N-;TiVUxbl+PMh)o8oBuHUNm&uc z44*2wGq)HlRRi+0fL;BwDC0WBG3s8uDFu-z3GEJ|1$51{PiP1Apc24`D9nyTvE;i} z1CO8OrVK!@xI6#obElM0 zgKl2h096oK92^>Ls0;cWlylO22^6KTOXEKYspB-&gN3)ezk)IrRJYbtBNEpyDcT6Q z4*zMUVr@edeU&6NPU$N6^+vjzza{J8gWITN4U40+og5-^>t@=84!1dRsiimaQ;A;8 zb!M1o6Cz7)iAV5Hv>B-T5uvkJ&}Df!^{(5iUtS5Vk-jwH^Q0IWODZlso8A)RujRlY zq9|vQ*@kJJ5t2h zSj9HI;w@&mw)S$r=J6DGdQCuEpNC3pw6S%XUF6DhyL*aXMk_#)UAUbTsgw+P=%tNj zyZuyVfr!()=mp7%qdv5s-KnMe_`a_spLp3mlbWhX?f9NOT}kelI)wbAS5{w`_p#&0 zpBe|yENc3wyE)Xhg36M!_cU>O6U0ERO+QrToWbglx4MI#;g<3BC&m~nN1hr+iCgHyOhk?SL91a$HS$$HO?0Ou*Ob8p( ztp=aJRL=l^HrGINH}oLBv2Kz908GD|tGm6et%tkdKa0@0XqxX&yDW;IcUc|=_XF5hV0t%9xT42Pm; zFJ+!q`HWOsz4{=oEG@rarCz%HjOr|P%87`f{NOU0JN0qj)aLiTb;IO_ijH<2aFejC zPIB6Cke#jYqSyR}AG+Ui;pVCSj&^3rr0jCVZJ5cTje>WOBRA`Ws14ocQn1u-!BsMS&!iW%9{iwX>&Zeme+%vy_ zy5X+aBapPz(0`+Jx1g*7`tlq;pSuZvbQ6$?*u}=7J1Q|0vAzGCaQ9zuj}4AQ%h%JTg1Ug zDv`W@_(_omq4qyLoC63}%NUspS6cXDAtvAQpg_4ZqBK7Vyq9 ztmSa7>A>xH8PlDeJC?>TkZgJ~ZR6c)Gm$c4U^aJf_&4bOvWwZz$u`~ZHk68}2^8+m z{-!$_M15LE&w8}DJ7b7~lHWnggalirXP>=7UM&FD%L<+;Y_gg1I>^4otm)F`dXyb_ z%?FE|T1-Z##d{ ztZd-Pt+ZzZo4kIPAST&lTQVkKhV50i z@56<(T7xAN}yS=5Gt&N_C zn}f@Pe@;!a!B+f`N!hu5l-agAD{-?V!KyJ#E-Tvy5LXbb#Q!RhuAw%oizkHTOnRGj zNpny%H6*g5@9G;3iqN`Vzoo{o@^xEx!1c&ai^(alf8Xg2$eao^X*=7_G3RL{Bvsv@g}1?_-z>y0|4~+t-yjq*hj$HWn2A^$lrjE@R1qi01UcHyQGe<18AJnNdD#x{SLr%U@84))V zAjWCOrGF`Ul&?~{-qlW~*DG&ia$MV)$gF~uJ%F3Jd}WnLg;79vMnwW=YI3<`dv-?| z=mAS1cutx~9K{%8?f48OdF(Sb;>TIx==s4PZHn{8X^xzQr?eiuuhPW^W>by=;`)C$ ze&Aa_m9+b!_eoslRToTRk)Zi6DH+Y@Kg3n`dzacE{@r)2*74a0d&oj-Z_4E%B5a1nUXj-P-1{K+Gr#6vHd^NZ+ data) { + _checkSheetArguments(sheetName); + var targetRow = _tables[sheetName].maxRows; + data.asMap().forEach((index, value) => updateCell( + sheetName, + CellIndex.indexByColumnRow(columnIndex: index, rowIndex: targetRow), + value)); + } + + /// find and replace + int findAndReplace(String sheetName, dynamic source, String target) { + _checkSheetArguments(sheetName); + var replaceCount = 0; + var rowIndex = 0; + for (var row in _tables[sheetName].rows) { + var sourceRegx = RegExp(source.toString()); + if (source.runtimeType == RegExp) { + sourceRegx == source; + } + row.asMap().forEach((columnIndex, value) { + if (value != null && sourceRegx.hasMatch(value)) { + updateCell( + sheetName, + CellIndex.indexByColumnRow( + columnIndex: columnIndex, rowIndex: rowIndex), + value.toString().replaceAll(sourceRegx, target.toString())); + replaceCount += 1; + } + }); + rowIndex += 1; + } + return replaceCount; + } + /// Remove row in [sheet] at position [rowIndex] removeRow(String sheet, int rowIndex) { if (!_sheets.containsKey(sheet) || rowIndex >= _tables[sheet]._maxRows) {