{"id":41007302,"url":"https://github.com/freefishgo/goexcel","last_synced_at":"2026-01-22T08:41:28.359Z","repository":{"id":57622959,"uuid":"395527955","full_name":"freefishgo/goexcel","owner":"freefishgo","description":"An array to Excel conversion and Excel to array conversion","archived":false,"fork":false,"pushed_at":"2024-04-09T11:48:49.000Z","size":42,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-20T15:48:35.528Z","etag":null,"topics":["excel","exceltolist","go","golang","listtoexcel","openxml"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freefishgo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-13T05:11:58.000Z","updated_at":"2024-04-23T11:22:10.000Z","dependencies_parsed_at":"2022-08-26T23:51:19.870Z","dependency_job_id":null,"html_url":"https://github.com/freefishgo/goexcel","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/freefishgo/goexcel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freefishgo%2Fgoexcel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freefishgo%2Fgoexcel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freefishgo%2Fgoexcel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freefishgo%2Fgoexcel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freefishgo","download_url":"https://codeload.github.com/freefishgo/goexcel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freefishgo%2Fgoexcel/sbom","scorecard":{"id":410710,"data":{"date":"2025-08-11","repo":{"name":"github.com/freefishgo/goexcel","commit":"862ab2323123f910875ff257835754c3d925da2b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/22 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T22:38:25.959Z","repository_id":57622959,"created_at":"2025-08-18T22:38:25.959Z","updated_at":"2025-08-18T22:38:25.959Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28659518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["excel","exceltolist","go","golang","listtoexcel","openxml"],"created_at":"2026-01-22T08:41:27.683Z","updated_at":"2026-01-22T08:41:28.354Z","avatar_url":"https://github.com/freefishgo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goexcel\nexcel\n\n``` go\ntype s1 struct {\n\tName string `export:\"一级姓名|姓名2,3\"`\n\tAge  int32  `export:\"年龄2,6\"`\n\tTime string `export:\"时间2,9\"`\n}\n\ntype s struct {\n\tName string `export:\"一级姓名|姓名1,2\"`\n\tAge  int32  `export:\"年龄1,5\"`\n\tTime string `export:\"时间1,8\"`\n\tList []s1\n}\n\ntype p struct {\n\tName   string `export:\"一级姓名|二级姓名|姓名,1\"`\n\tAge    int32  `export:\"年龄,4\"`\n\tTime   string `export:\"时间,7\"`\n\tList   []s\n}\nfunc main() {\n\tv := \u0026p{\n\t\tName: \"天外飞仙\",\n\t\tAge:  18,\n\t\tTime: \"我是时间\",\n\t\tList: []s{\n\t\t\t{\n\t\t\t\tName: \"大名\",\n\t\t\t\tAge:  19,\n\t\t\t\tTime: \"我是大名时间\",\n\t\t\t\tList: []s1{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"大名\",\n\t\t\t\t\t\tAge:  19,\n\t\t\t\t\t\tTime: \"我是大名时间\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"小名\",\n\t\t\t\tAge:  20,\n\t\t\t},\n\t\t},\n\t}\n\tv2:=\u0026p{\n\t\tName: \"天外飞仙\",\n\t\tAge:  16,\n\t\tTime: \"我是开始时间\",\n\t\tList: []s{\n\t\t\t{\n\t\t\t\tName: \"小名\",\n\t\t\t\tAge:  20,\n\t\t\t\tTime: \"我是小名时间\",\n\t\t\t\tList: []s1{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"大名\",\n\t\t\t\t\t\tAge:  19,\n\t\t\t\t\t\tTime: \"我是大名时间\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"大名\",\n\t\t\t\t\t\tAge:  19,\n\t\t\t\t\t\tTime: \"我是大名时间\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"小名\",\n\t\t\t\tAge:  21,\n\t\t\t\tTime: \"我是小名名时间2\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"小名\",\n\t\t\t\tAge:  21,\n\t\t\t\tTime: \"我是小名名时间2\",\n\t\t\t},\n\t\t},\n\t}\n\tlist := append([]*p(nil), v, v2)\n\txlsx, err := goexcel.ListToExcelSheet1(list)\n\tif err != nil {\n\t\tfmt.Println(err.Error())\n\t\treturn\n\t}\n\terr = xlsx.SaveAs(time.Now().Format(\"20060102150405\") + \".xlsx\")\n}\n\n```\n\n\u003ctable width=\"659\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:659.00pt;border-collapse:collapse;table-layout:fixed;\"\u003e\n\u003ctbody\u003e\n\u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" height=\"12.40\" width=\"157.45\" colspan=\"3\" \u003e一级姓名\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"59.15\" rowspan=\"3\" \u003e年龄\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"50.40\" rowspan=\"3\" \u003e年龄1\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"50.40\" rowspan=\"3\" \u003e年龄2\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"81.65\" rowspan=\"3\" \u003e时间\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"116.65\" rowspan=\"3\" \u003e时间1\u003c/td\u003e\n    \u003ctd class=\"xl65\" width=\"143.30\" rowspan=\"3\" \u003e时间2\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" height=\"12.40\" \u003e二级姓名\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\"\u003e姓名1\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e姓名2\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" height=\"12.40\" \u003e姓名\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" height=\"24.80\" rowspan=\"2\" \u003e天外飞仙\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e大名\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e大名\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e18\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e19\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e19\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e我是时间\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是大名时间\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是大名时间\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" \u003e小名\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e20\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" height=\"49.60\" rowspan=\"4\" \u003e天外飞仙\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e小名\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e大名\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"4\" \u003e16\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e20\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e19\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"4\" \u003e我是开始时间\u003c/td\u003e\n    \u003ctd class=\"xl65\" rowspan=\"2\" \u003e我是小名时间\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是大名时间\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" \u003e大名\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e19\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是大名时间\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" \u003e小名\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e21\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是小名名时间2\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr height=\"12.40\" style=\"height:12.40pt;\"\u003e\n    \u003ctd class=\"xl65\" \u003e小名\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e21\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n    \u003ctd class=\"xl65\" \u003e我是小名名时间2\u003c/td\u003e\n    \u003ctd class=\"xl65\"\u003e\u003c/td\u003e\n   \u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\n\n``` go\n// load from excel\nvar list []*p\ngoexcel.ExcelSheet1ToListFromPath(\"20210814182854.xlsx\", \u0026list)\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreefishgo%2Fgoexcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreefishgo%2Fgoexcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreefishgo%2Fgoexcel/lists"}