44import cn .idev .excel .FastExcel ;
55import cn .idev .excel .support .ExcelTypeEnum ;
66import cn .idev .excel .util .TestFileUtil ;
7+ import cn .idev .excel .write .metadata .WriteSheet ;
78import java .io .File ;
89import java .util .ArrayList ;
910import java .util .Arrays ;
@@ -28,6 +29,8 @@ public void testSheetOrder03() {
2829 testSheetOrderInternal (ExcelTypeEnum .XLS , Arrays .asList (-1 ));
2930 testSheetOrderInternal (ExcelTypeEnum .XLS , Arrays .asList (-8 , -10 , -6 ));
3031 testSheetOrderInternal (ExcelTypeEnum .XLS , Arrays .asList (-8 , 6 ));
32+ // build a WriteSheet using the sheet name
33+ testSheetOrderWithSheetName (ExcelTypeEnum .XLS );
3134 }
3235
3336 @ Test
@@ -42,6 +45,8 @@ public void testSheetOrder07() {
4245 testSheetOrderInternal (ExcelTypeEnum .XLSX , Arrays .asList (-1 ));
4346 testSheetOrderInternal (ExcelTypeEnum .XLSX , Arrays .asList (-8 , -10 , -6 ));
4447 testSheetOrderInternal (ExcelTypeEnum .XLSX , Arrays .asList (-8 , 6 ));
48+ // build a WriteSheet using the sheet name
49+ testSheetOrderWithSheetName (ExcelTypeEnum .XLSX );
4550 }
4651
4752 private void testSheetOrderInternal (ExcelTypeEnum excelTypeEnum , List <Integer > sheetNoList ) {
@@ -81,6 +86,49 @@ private Map<Integer, Integer> initSheetDataSizeList(List<Integer> sheetNoList) {
8186 return dataMap ;
8287 }
8388
89+ private void testSheetOrderWithSheetName (ExcelTypeEnum excelTypeEnum ) {
90+ List <String > sheetNameList = Arrays .asList ("Sheet1" , "Sheet2" , "Sheet3" );
91+ List <Integer > sheetNoList = Arrays .asList (0 , 1 , 2 );
92+
93+ Map <Integer , Integer > dataMap = initSheetDataSizeList (sheetNoList );
94+ File testFile = TestFileUtil .createNewFile ("writesheet/write-sheet-order-name" + excelTypeEnum .getValue ());
95+
96+ try (ExcelWriter excelWriter = FastExcel .write (testFile , WriteSheetData .class )
97+ .excelType (excelTypeEnum )
98+ .build ()) {
99+
100+ // sheetName is empty
101+ int sheetNo = 0 ;
102+ WriteSheet writeSheet = FastExcel .writerSheet (sheetNo ).build ();
103+ excelWriter .write (dataList (dataMap .get (sheetNo )), writeSheet );
104+ Assertions .assertEquals (
105+ sheetNo , excelWriter .writeContext ().writeSheetHolder ().getSheetNo ());
106+
107+ // sheetNo is empty
108+ sheetNo = 1 ;
109+ writeSheet = FastExcel .writerSheet (sheetNameList .get (sheetNo )).build ();
110+ excelWriter .write (dataList (dataMap .get (sheetNo )), writeSheet );
111+ Assertions .assertEquals (
112+ sheetNo , excelWriter .writeContext ().writeSheetHolder ().getSheetNo ());
113+
114+ sheetNo = 2 ;
115+ writeSheet =
116+ FastExcel .writerSheet (sheetNo , sheetNameList .get (sheetNo )).build ();
117+ excelWriter .write (dataList (dataMap .get (sheetNo )), writeSheet );
118+ Assertions .assertEquals (
119+ sheetNo , excelWriter .writeContext ().writeSheetHolder ().getSheetNo ());
120+ }
121+
122+ for (int i = 0 ; i < sheetNoList .size (); i ++) {
123+ List <WriteSheetData > sheetDataList = FastExcel .read (testFile )
124+ .excelType (excelTypeEnum )
125+ .head (WriteSheetData .class )
126+ .sheet (i )
127+ .doReadSync ();
128+ Assertions .assertEquals (dataMap .get (sheetNoList .get (i )), sheetDataList .size ());
129+ }
130+ }
131+
84132 private static List <WriteSheetData > dataList (int size ) {
85133 List <WriteSheetData > dataList = new ArrayList <>();
86134 for (int i = 0 ; i < size ; i ++) {
0 commit comments