From 8deaf25268265c65d2772d558898d7f9648caee3 Mon Sep 17 00:00:00 2001 From: xuri Date: Tue, 30 Apr 2024 22:37:08 +0800 Subject: [PATCH] This closes #1889, refs #1732 and #1735 Saving workbook with reverse sorted internal part path to keep same hash of identical files --- file.go | 57 ++------------------------------------------------------- 1 file changed, 2 insertions(+), 55 deletions(-) diff --git a/file.go b/file.go index 0e3f7f58cc..03af61eb1a 100644 --- a/file.go +++ b/file.go @@ -212,9 +212,7 @@ func (f *File) writeToZip(zw *zip.Writer) error { files = append(files, path.(string)) return true }) - - sortExcelFiles(files) - + sort.Sort(sort.Reverse(sort.StringSlice(files))) for _, path := range files { var fi io.Writer if fi, err = zw.Create(path); err != nil { @@ -230,9 +228,7 @@ func (f *File) writeToZip(zw *zip.Writer) error { tempFiles = append(tempFiles, path.(string)) return true }) - - sortExcelFiles(tempFiles) - + sort.Sort(sort.Reverse(sort.StringSlice(tempFiles))) for _, path := range tempFiles { var fi io.Writer if fi, err = zw.Create(path); err != nil { @@ -242,52 +238,3 @@ func (f *File) writeToZip(zw *zip.Writer) error { } return err } - -// -func sortExcelFiles(files []string) { - dirMap := make(map[string][]string) - - for _, f := range files { - s := strings.SplitN(f, "/", 2) - if len(s) > 1 { - dirMap[s[0]] = append(dirMap[s[0]], s[1]) - } else { - dirMap[""] = append(dirMap[""], s[0]) - } - } - - for k, fl := range dirMap { - sort.Strings(fl) - dirMap[k] = fl - } - - out := files[0:0] - - out = appendExcelFile(out, "xl", dirMap["xl"]) - - delete(dirMap, "xl") - - var dirs []string - for k := range dirMap { - dirs = append(dirs, k) - } - - sort.Strings(dirs) - - for _, d := range dirs { - out = appendExcelFile(out, d, dirMap[d]) - } -} - -// -func appendExcelFile(inFiles []string, d string, files []string) []string { - if len(d) > 0 { - d += "/" - } - - for _, f := range files { - inFiles = append(inFiles, d+f) - } - - return inFiles -}