package excelize import ( "archive/zip" "bytes" "io" "log" "math" "regexp" "strconv" "strings" ) // ReadZip() takes a pointer to a zip.ReadCloser and returns a // xlsx.File struct populated with its contents. In most cases // ReadZip is not used directly, but is called internally by OpenFile. func ReadZip(f *zip.ReadCloser) ([]FileList, error) { defer f.Close() return ReadZipReader(&f.Reader) } // ReadZipReader() can be used to read an XLSX in memory without // touching the filesystem. func ReadZipReader(r *zip.Reader) ([]FileList, error) { var fileList []FileList for _, v := range r.File { singleFile := FileList{ Key: v.Name, Value: readFile(v), } fileList = append(fileList, singleFile) } return fileList, nil } // Read XML content as string and replace drawing property in XML namespace of sheet func readXml(files []FileList, name string) string { for _, file := range files { if file.Key == name { return strings.Replace(file.Value, "