@@ -348,6 +348,7 @@ SheetDiffStatus DiffSheet(ISheet src, ISheet dst, SheetDiffStatus status = null)
348348 status . rowID2DiffMap2 = new Dictionary < int , int > ( ) ;
349349 status . Diff2RowID1 = new Dictionary < int , int > ( ) ;
350350 status . Diff2RowID2 = new Dictionary < int , int > ( ) ;
351+ status . DiffMaxLineCount = new Dictionary < int , int > ( ) ;
351352 status . RowEdited1 = status . RowEdited1 ?? new Dictionary < int , Dictionary < int , CellEditMode > > ( ) ;
352353 status . RowEdited2 = status . RowEdited2 ?? new Dictionary < int , Dictionary < int , CellEditMode > > ( ) ;
353354
@@ -361,7 +362,8 @@ SheetDiffStatus DiffSheet(ISheet src, ISheet dst, SheetDiffStatus status = null)
361362 if ( diffkv . Obj2 . Key == null ) {
362363 rowid2 = - 1 ;
363364 }
364- var diffrow = DiffSheetRow ( src , rowid1 , dst , rowid2 , status ) ;
365+ int maxLineCount = 0 ;
366+ var diffrow = DiffSheetRow ( src , rowid1 , dst , rowid2 , status , out maxLineCount ) ;
365367
366368 if ( diffkv . Obj1 . Key == null ) {
367369 // 创建新行,方便比较,放在后面是为了保证diff的时候是new,delete的形式,而不是modify
@@ -376,6 +378,7 @@ SheetDiffStatus DiffSheet(ISheet src, ISheet dst, SheetDiffStatus status = null)
376378 status . column2diff2 [ rowid2 ] = getColumn2Diff ( diffrow , false ) ;
377379
378380 int diffIdx = status . diffSheet . Count ;
381+ status . DiffMaxLineCount [ diffIdx ] = maxLineCount ;
379382
380383 status . rowID2DiffMap1 [ rowid1 ] = diffIdx ;
381384 status . rowID2DiffMap2 [ rowid2 ] = diffIdx ;
@@ -777,23 +780,29 @@ List<DiffResult<string2int>> GetIDDiffList(ISheet sheet1, ISheet sheet2, int che
777780 return result . ToList ( ) ;
778781 }
779782
780- List < DiffResult < string > > DiffSheetRow ( ISheet sheet1 , int row1 , ISheet sheet2 , int row2 , SheetDiffStatus status ) {
783+ List < DiffResult < string > > DiffSheetRow ( ISheet sheet1 , int row1 , ISheet sheet2 , int row2 , SheetDiffStatus status , out int maxLineCount ) {
781784 var list1 = new List < string > ( ) ;
782785 var list2 = new List < string > ( ) ;
783786
787+ maxLineCount = 0 ;
784788 if ( sheet1 . GetRow ( row1 ) != null ) {
785789 var row = sheet1 . GetRow ( row1 ) ;
786790 var columnCount = books [ "src" ] . SheetValideColumn [ sheet1 . SheetName ] ;
787- for ( int i = 0 ; i < columnCount ; ++ i ) {
788- list1 . Add ( Util . GetCellValue ( row . GetCell ( i ) ) ) ;
791+ for ( int i = 0 ; i < columnCount ; ++ i ) {
792+ var value = Util . GetCellValue ( row . GetCell ( i ) ) ;
793+ maxLineCount = Math . Max ( maxLineCount , value . Count ( ( c ) => { return c == '\n ' ; } ) + 1 ) ;
794+
795+ list1 . Add ( value ) ;
789796 }
790797 }
791798
792799 if ( sheet2 . GetRow ( row2 ) != null ) {
793800 var row = sheet2 . GetRow ( row2 ) ;
794801 var columnCount = books [ "dst" ] . SheetValideColumn [ sheet2 . SheetName ] ;
795802 for ( int i = 0 ; i < columnCount ; ++ i ) {
796- list2 . Add ( Util . GetCellValue ( row . GetCell ( i ) ) ) ;
803+ var value = Util . GetCellValue ( row . GetCell ( i ) ) ;
804+ maxLineCount = Math . Max ( maxLineCount , value . Count ( ( c ) => { return c == '\n ' ; } ) + 1 ) ;
805+ list2 . Add ( value ) ;
797806 }
798807 }
799808 var diff = DiffUtil . Diff ( list1 , list2 ) ;
0 commit comments