国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Golang Gin 接口返回 Excel 文件

這篇具有很好參考價(jià)值的文章主要介紹了Golang Gin 接口返回 Excel 文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.Web 頁(yè)面導(dǎo)出數(shù)據(jù)到文件由后臺(tái)實(shí)現(xiàn)還是前端實(shí)現(xiàn)?

Web 頁(yè)面導(dǎo)出表數(shù)據(jù)到 Excel(或其他格式)可以由前端或后臺(tái)來(lái)實(shí)現(xiàn),具體的實(shí)現(xiàn)方式取決于你的應(yīng)用需求和架構(gòu)。以下是一些考慮因素:

(1)前端實(shí)現(xiàn)。

  • 如果你的數(shù)據(jù)導(dǎo)出不涉及復(fù)雜的數(shù)據(jù)處理、數(shù)據(jù)權(quán)限控制或數(shù)據(jù)來(lái)源的保護(hù),你可以考慮在前端實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出。

  • 前端實(shí)現(xiàn)通常意味著使用JavaScript庫(kù)或框架來(lái)生成Excel文件,例如使用開源庫(kù)如SheetJS的xlsx.js或者使用瀏覽器內(nèi)置的API,如Blob對(duì)象和FileSaver.js來(lái)生成Excel文件。

  • 前端實(shí)現(xiàn)具有即時(shí)性,用戶可以在瀏覽器中直接進(jìn)行數(shù)據(jù)導(dǎo)出操作,不需要等待后臺(tái)處理。

(2)后臺(tái)實(shí)現(xiàn)。

  • 如果你需要處理大量數(shù)據(jù)、進(jìn)行復(fù)雜的數(shù)據(jù)操作、實(shí)施數(shù)據(jù)權(quán)限控制、或者需要從數(shù)據(jù)庫(kù)或其他后端數(shù)據(jù)源提取數(shù)據(jù),通常更適合在后臺(tái)實(shí)現(xiàn)。

  • 后臺(tái)實(shí)現(xiàn)可以使用服務(wù)器端腳本,如 PHP、Node.js、Python 等,來(lái)生成 Excel文件。這可以確保數(shù)據(jù)的一致性和安全性。

  • 后臺(tái)實(shí)現(xiàn)還可以允許對(duì)大型數(shù)據(jù)集進(jìn)行分頁(yè)、篩選、排序等操作,以提供更強(qiáng)大的導(dǎo)出功能。

一種常見的做法是,前端觸發(fā)數(shù)據(jù)導(dǎo)出請(qǐng)求,將請(qǐng)求發(fā)送到后臺(tái),后臺(tái)處理數(shù)據(jù)生成Excel文件,然后將生成的Excel文件發(fā)送回前端以供用戶下載。這種方法結(jié)合了前后端的優(yōu)勢(shì),可以提供數(shù)據(jù)處理和安全性。

2.Golang Excel 庫(kù)選型

目前開源 Golang Excel 庫(kù)流行的有兩個(gè):

  • excelize

Excelize 是一個(gè)功能強(qiáng)大的 Go 語(yǔ)言 Excel 庫(kù),你可以使用 Excelize 創(chuàng)建和編輯工作簿、工作表、單元格等內(nèi)容。

GitHub 倉(cāng)庫(kù):https://github.com/qax-os/excelize

  • xlsx

xlsx 是一個(gè)簡(jiǎn)單的Golang庫(kù),用于讀寫 XLSX 文件。它提供了創(chuàng)建、編輯工作簿、工作表和單元格的功能。

GitHub 倉(cāng)庫(kù):https://github.com/tealeg/xlsx

因?yàn)?xlsx 較為輕量,所以下面以 xlsx 為例,給出實(shí)現(xiàn)。

3.后臺(tái)實(shí)現(xiàn)示例

在 Web 框架 Gin 中生成 Excel 文件并在接口返回。

func ExportHandler(c *gin.Context) {
    file := xlsx.NewFile()
    sheet, _ := file.AddSheet("InsuranceActive")

    // Add titles.
    titles := []string{
		"Id",
		"CreatedAt",
		"UpdatedAt",
		"CreatorId",
		"UpdaterId",
		"CompanyName",
    }
    row := sheet.AddRow()
    for _, title := range titles {
	cell := row.AddCell()
	cell.Value = title
    }

    // Add rows just like add titles.
    ...

    // Return the excel file.
    c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    filename := fmt.Sprintf("IndustryInfos_%v.xlsx", time.Now().Format("2006-01-02T15:04:05"))
    c.Header("Content-Disposition", "attachment; filename="+filename)
    if err := file.Write(c.Writer); err != nil {
        c.JSON(http.StatusOK, "failed")
        return
    }
    c.JSON(http.StatusOK, "suceess")
}

// 設(shè)置路由
engine.GET("/xlsx/export", ExportHandler)

注意回包 Header 的設(shè)置:
(1)Content-Type 設(shè)為:

"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

關(guān)于其他類型文件的 MIME 可以參考:What is a correct MIME type for .docx, .pptx, etc.? - Stack Overflow。

(2)還需要設(shè)置 “Content-Disposition” 表示回包是一個(gè)附件,并需要指定附件名稱。

4.xlsx 庫(kù)的問題

通過(guò)瀏覽器下載庫(kù) tealeg/xlsx 生成的 Excel 文件后,打開時(shí)會(huì)報(bào)下面的錯(cuò)誤。

Golang Gin 接口返回 Excel 文件,Gin,導(dǎo)出文件,前端,后臺(tái)
點(diǎn)擊“是”后可正常打開文件,說(shuō)明文件內(nèi)容是正確的。

該警告在 v1 就已經(jīng)出現(xiàn),且?guī)斓淖髡咴缫阎獣?,但目前最新版?v3 仍未解決該問題。可能因?yàn)椴挥绊?Excel 文件內(nèi)容的正確性,所以拖到現(xiàn)在仍未解決。

詳細(xì)討論,請(qǐng)參見 XLSX files produced by this library need repair by Excel. #53。

奇怪地是通過(guò)func (*File) Save直接保存至本地的 Excel 文件沒有這個(gè)問題。

5.小結(jié)

綜上所述,前端或后臺(tái)的選擇取決于你的具體需求、性能、安全性以及數(shù)據(jù)處理的復(fù)雜性。一些應(yīng)用可能會(huì)同時(shí)在前端和后臺(tái)實(shí)現(xiàn)導(dǎo)出功能,以提供更靈活的選項(xiàng)。


參考文獻(xiàn)

The tealeg/xlsx Tutorial: Reading and writing xlsx files with Go
What is a correct MIME type for .docx, .pptx, etc.? - Stack Overflow
XLSX files produced by this library need repair by Excel. #53文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-739565.html

到了這里,關(guān)于Golang Gin 接口返回 Excel 文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VUE: 將Json (后臺(tái)返回的數(shù)據(jù)-list) 數(shù)據(jù)轉(zhuǎn)換為Excel文件并實(shí)現(xiàn)前端下載

    1. 下載xlsx的包 2. vue中的寫法 創(chuàng)建button的按鈕,添加點(diǎn)擊的函數(shù) 寫函數(shù) 函數(shù)流程總體來(lái)說(shuō)就是: 將json字符串書寫寫入文件,然后轉(zhuǎn)換為blob的對(duì)象,之后通過(guò)文件流的方式傳遞給用戶下載 其中的 jsonData 可以通過(guò) axios 請(qǐng)求后端傳遞來(lái)的數(shù)據(jù)。

    2024年02月11日
    瀏覽(93)
  • VUE通用后臺(tái)管理系統(tǒng)(四)前端導(dǎo)出文件(CSV、XML、HTML、PDF、EXCEL)

    VUE通用后臺(tái)管理系統(tǒng)(四)前端導(dǎo)出文件(CSV、XML、HTML、PDF、EXCEL)

    常見的導(dǎo)出格式:CSV、XML、HTML、PDF、EXCEL 1)準(zhǔn)備工作 安裝所需相關(guān)依賴 前兩個(gè)是PDF格式需要的依賴,后兩個(gè)是excel格式所需,如果沒有需求這兩種格式的可以忽略這一步 然后畫頁(yè)面 ? 頁(yè)面效果 2)導(dǎo)出CSV格式的文件 新建src/utils/utils.js文件 寫入exportCsv方法,columns為表頭,

    2024年02月05日
    瀏覽(57)
  • 【前端下載文件流詳解】前端實(shí)現(xiàn)多種類型文件(word,excel,pdf,rar,zip等)的下載,接口返回文件流形式(附源碼)

    【前端下載文件流詳解】前端實(shí)現(xiàn)多種類型文件(word,excel,pdf,rar,zip等)的下載,接口返回文件流形式(附源碼)

    【 寫在前面 】其實(shí)之前我也寫了有關(guān)java實(shí)現(xiàn)文件的下載,但是當(dāng)時(shí)是局限于excel文檔,針對(duì)其他類型的并沒有介紹,這次剛好有個(gè)客戶現(xiàn)場(chǎng)反饋回來(lái)的,說(shuō)我們系統(tǒng)確實(shí)能下載報(bào)告,但是甲方領(lǐng)導(dǎo)要看所有的報(bào)告,這不我每天得一個(gè)一個(gè)的點(diǎn)擊下載,然后再打包給他們領(lǐng)導(dǎo)

    2023年04月24日
    瀏覽(35)
  • 文件下載-后臺(tái)返回流給前端

    在上面的 Servlet 中,首先需要獲取要返回的文件路徑,然后檢查文件是否存在。如果文件不存在,返回 HttpServletResponse.SC_NOT_FOUND 響應(yīng)代碼;否則,設(shè)置 HTTP 響應(yīng)類型為 application/octet-stream ,并且設(shè)置響應(yīng)頭 Content-Disposition 為 attachment ,這樣瀏覽器會(huì)自動(dòng)彈出文件下載對(duì)話框。

    2024年02月09日
    瀏覽(14)
  • 前端導(dǎo)出word文件的多種方式、前端導(dǎo)出excel文件

    前端導(dǎo)出word文件的多種方式、前端導(dǎo)出excel文件

    先看效果: 這是頁(yè)面中的table 這是導(dǎo)出后的效果: 需要的依賴: npm 自行安裝,需要看官網(wǎng)的具體參數(shù)自行去github上面找對(duì)應(yīng)的參數(shù) 具體代碼:(先看word模板,在看代碼,word中的變量和代碼中 doc.setData() 是一一對(duì)應(yīng)的) 包依賴: 代碼 導(dǎo)出效果: 需要的依賴: node-xlsx 代碼

    2024年03月24日
    瀏覽(38)
  • 后端返回文件流,前端怎么導(dǎo)出、下載

    后端返回文件流,前端怎么導(dǎo)出、下載

    ? ? ? ? 工作中肯定有很多導(dǎo)出excel、下載文件這種功能。一般都是后端做好,我們?nèi)フ?qǐng)求對(duì)應(yīng)的接口就行了,前端還需要做一些處理就可以實(shí)現(xiàn)導(dǎo)出、下載功能了。具體怎么操作呢,我們來(lái)看看! ? ? ? ? 我們?cè)谡?qǐng)求的時(shí)候 需要定義responseType【響應(yīng)類型】為blob類型,如果

    2024年02月12日
    瀏覽(26)
  • js將后端返回的文件流導(dǎo)出為excel,并自定義下載文件名

    js將后端返回的文件流導(dǎo)出為excel,并自定義下載文件名

    一. 需求 后臺(tái)管理系統(tǒng),常會(huì)出現(xiàn)導(dǎo)出excel表格功能;點(diǎn)擊導(dǎo)出按鈕,請(qǐng)求后端接口,需要將接口返回的 文件流 導(dǎo)出為excel,實(shí)現(xiàn)前端下載excel文件。 但是,返回的數(shù)據(jù)獲取 response 時(shí)出現(xiàn)亂碼,如圖: 二. 實(shí)現(xiàn)思路 調(diào)用后端下載接口,獲取傳遞過(guò)來(lái)的二進(jìn)制數(shù)據(jù)流 創(chuàng)建 a 標(biāo)

    2024年02月05日
    瀏覽(171)
  • 后端接口返回文件流格式、前端如何實(shí)現(xiàn)文件下載導(dǎo)出呢?

    后端接口返回文件流格式、前端如何實(shí)現(xiàn)文件下載導(dǎo)出呢?

    在項(xiàng)目開發(fā)過(guò)程中,難免會(huì)需要實(shí)現(xiàn)文件下載功能,記錄下自己實(shí)際開發(fā)過(guò)程過(guò)程中遇到兩種實(shí)現(xiàn)的方式。一種:后端直接返回加密url ,前端解密后直接使用 a標(biāo)簽下載就可以,這種方法相等比較簡(jiǎn)單,另一種:后端接口直接返回文件流,這種方式前端就需要單獨(dú)封裝對(duì)應(yīng)的

    2024年02月16日
    瀏覽(31)
  • Vue前端表格導(dǎo)出Excel文件

    Vue前端表格導(dǎo)出Excel文件

    分享一個(gè)Vue前端導(dǎo)出Excel文件的方法。記錄學(xué)習(xí)! 功能需求 :將表格的全部數(shù)據(jù)導(dǎo)出Excel格式的文件 前端 :Vue3+Element-Plus 這個(gè)導(dǎo)出方法全部為前端操作,后端只需要傳入表格數(shù)據(jù)到前端即可(基礎(chǔ)的多表查詢,用的內(nèi)連接) 2.1 核心方法 將這個(gè)導(dǎo)出方法單獨(dú)封裝出來(lái),帶一

    2023年04月24日
    瀏覽(24)
  • 后端返回文件流,前端怎么導(dǎo)出、下載(8種方法可實(shí)現(xiàn))

    在前端導(dǎo)出和下載后端返回的文件流時(shí),可以使用以下幾種方法: 使用 window.open() 方法: 在前端使用 window.open() 方法打開一個(gè)新的窗口或標(biāo)簽頁(yè),并將后端返回的文件流作為URL傳遞給該方法。瀏覽器會(huì)自動(dòng)下載該文件。 例如: window.open(\\\'http://example.com/download\\\', \\\'_blank\\\'); 使用

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包