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) (map[string]string, 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) (map[string]string, error) { fileList := make(map[string]string) for _, v := range r.File { fileList[v.Name] = readFile(v) } return fileList, nil } // Read XML content as string and replace drawing property in XML namespace of sheet func readXML(files map[string]string, name string) string { if content, ok := files[name]; ok { return strings.Replace(content, "