Golang이 Excel 문서를 생성하는 방법을 자세히 설명하는 기사
이 기사는 Golang을 사용하여 Excel 문서를 생성하는 방법을 주로 소개합니다. 관심 있는 친구는 아래를 살펴보는 것이 모든 사람에게 도움이 되기를 바랍니다.
데이터를 기반으로 Excel 문서를 생성하는 것은 매우 일반적인 요구 사항입니다. 이 기사에서는 Go의 Excelize 라이브러리를 사용하여 Excel 문서를 생성하는 방법과 일부 특정 시나리오에서의 코드 구현을 소개합니다.
Excelize 라이브러리 소개
Excelize
는 ECMA-376, ISO/IEC 29500 국제 표준을 기반으로 Office Excel 문서를 운영하기 위해 Go 언어로 작성된 기본 라이브러리입니다. 이를 사용하여 Microsoft Excel™ 2007 이상으로 작성된 스프레드시트 문서를 읽고 쓸 수 있습니다. XLSX / XLSM / XLTM / 데이터 통합 문서와 같은 다양한 문서 형식을 지원합니다. 다양한 보고서 플랫폼, 클라우드 컴퓨팅, 엣지 컴퓨팅 및 기타 시스템에 적용할 수 있습니다. 이 라이브러리를 사용하려면 Go 언어 버전 1.15 이상이 필요합니다. Excelize
是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。
性能对比
下图是一些主要的开源 Excel 库在生成 12800*50 纯文本矩阵时的性能对比(OS: macOS Mojave version 10.14.4, CPU: 3.4 GHz Intel Core i5, RAM: 16 GB 2400 MHz DDR4, HDD: 1 TB),包括 Go、Python、Java、PHP 和 NodeJS。
安装
最新的版本是 v2.4.0
:
go get github.com/360EntSecGroup-Skylar/excelize/v2
创建 Excel 文档
下面的案例中,我们创建了一个 Excel 文档,并使用 NewSheet
方法新建了一个 Sheet2
工作表,Sheet1
是默认创建的工作表,然后我们使用 SetCellValue
方法分别在 Sheet2
工作表的 A2
单元格 和 Sheet1
表格的 B2
单元格设置值,并通过使用 SetActiveSheet
方法设置 Sheet2
工作表为默认的工作表,最终调用 SaveAs
方法将数据写入 Excel 文档中:
package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" ) func main() { f := excelize.NewFile() // 创建一个工作表 index := f.NewSheet("Sheet2") // 设置单元格的值 f.SetCellValue("Sheet2", "A2", "Hello world.") f.SetCellValue("Sheet1", "B2", 100) // 设置工作簿的默认工作表 f.SetActiveSheet(index) // 根据指定路径保存文件 if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) } }
实际场景复现
创建工作表
工作表名称是大小写敏感的:
index := f.NewSheet("Sheet2")
删除默认创建的工作表
默认创建的 Excel 文档是包含一个名为 Sheet1
的工作表,我们可能并不需要这个默认工作表,这个时候我们可以删除这个工作表:
f.DeleteSheet("Sheet1")
合并单元格
合并 Sheet1
工作表上 F1:I2
区域内的单元格:
excel.MergeCell("Sheet1", "F1", "I2")
单元格样式
给单元格设置样式会经常遇到,比如设置单元格的背景颜色,Excelize
库提供下面两个方法进行设置单元格样式(NewStyle
和 SetCellStyle
):
// 通过给定的样式格式 JSON 或结构体的指针创建样式并返回样式索引。 // 请注意,颜色需要使用 RGB 色域代码表示。 style, err := f.NewStyle(`{ "border": [ { "type": "left", "color": "0000FF", "style": 3 }, { "type": "top", "color": "00FF00", "style": 4 }, { "type": "bottom", "color": "FFFF00", "style": 5 }, { "type": "right", "color": "FF0000", "style": 6 }, { "type": "diagonalDown", "color": "A020F0", "style": 7 }, { "type": "diagonalUp", "color": "A020F0", "style": 8 }] }`) if err != nil { fmt.Println(err) } err = f.SetCellStyle("Sheet1", "D7", "D7", style)
文字水平居中
文字水平居中需要用到 Alignment
样式结构体:
type Alignment struct { Horizontal string `json:"horizontal"` Indent int `json:"indent"` JustifyLastLine bool `json:"justify_last_line"` ReadingOrder uint64 `json:"reading_order"` RelativeIndent int `json:"relative_indent"` ShrinkToFit bool `json:"shrink_to_fit"` TextRotation int `json:"text_rotation"` Vertical string `json:"vertical"` WrapText bool `json:"wrap_text"` }
水平居中只要设置 Horizontal
的值为 center
即可:
style, err := f.NewStyle(`{"alignment":{"horizontal":"center"}}`) if err != nil { fmt.Println(err) } err = excel.SetCellStyle("Sheet1", "B1", "B1", style)
给单元格设置纯色填充
给单元格填充颜色会使用到 Fill
样式结构体:
type Fill struct { Type string `json:"type"` Pattern int `json:"pattern"` Color []string `json:"color"` Shading int `json:"shading"` }
Style 结构体
从上面设置样式的代码中,我们可以发现 border
是一个数组,而 alignment
是一个结构体,这是由 Style
성능 비교
다음 그림은 12800*50 일반 텍스트 행렬을 생성할 때 일부 주요 오픈소스 Excel 라이브러리의 성능 비교를 보여줍니다(OS: macOS Mojave 버전 10.14 .4, CPU: 3.4GHz Intel Core i5, RAM: 16GB 2400MHz DDR4, HDD: 1TB), Go, Python, Java, PHP 및 NodeJS 포함.
설치 🎜🎜최신 버전은 v2.4.0
입니다: 🎜type Style struct {
Border []Border `json:"border"`
Fill Fill `json:"fill"`
Font *Font `json:"font"`
Alignment *Alignment `json:"alignment"`
Protection *Protection `json:"protection"`
NumFmt int `json:"number_format"`
DecimalPlaces int `json:"decimal_places"`
CustomNumFmt *string `json:"custom_number_format"`
Lang string `json:"lang"`
NegRed bool `json:"negred"`
}
로그인 후 복사
Excel 문서 만들기 🎜🎜다음과 같은 경우에는 Excel 문서를 만들고 NewSheet
메서드를 사용하여 새 Sheet2
워크시트를 만들었습니다. Sheet1
은 기본적으로 생성된 워크시트입니다. code>SetCellValue 메서드는 각각 Sheet2
워크시트의 A2
셀과 Sheet1B2
셀에 있습니다. /code> 테이블에 값을 설정하고 SetActiveSheet
메서드를 사용하여 Sheet2
워크시트를 기본 워크시트로 설정한 다음 마지막으로 SaveAs
를 호출합니다. code> 메소드를 사용하여 Excel에 데이터를 작성합니다. 문서 내용: 🎜rrreee실제 시나리오 재현🎜워크시트 만들기
🎜워크시트 이름은 대소문자를 구분합니다. :🎜rrreee기본적으로 생성된 워크시트 삭제
🎜기본적으로 생성된 Excel 문서에는 Sheet1, 이 기본 워크시트는 필요하지 않습니다. 지금은 이 워크시트를 삭제할 수 있습니다. 🎜rrreee<h3 id="셀-병합">셀 병합</h3>🎜Merge <code>Sheet1 code> 워크시트 상단 <code>F1:I2
영역의 셀: 🎜rrreee셀 스타일
🎜다음과 같이 셀에 대한 스타일 설정을 자주 접하게 됩니다. 셀의 배경색을 설정합니다. Excelize
라이브러리는 셀 스타일(NewStyle
및 SetCellStyle
)을 설정하는 다음 두 가지 방법을 제공합니다. 텍스트 가로 가운데 맞춤
🎜텍스트 가로 가운데 맞춤에는 정렬
스타일 구조가 필요합니다. 🎜rrreee🎜가로 가운데 맞춤은 가로
만 설정하면 됩니다. code > 값은 center
입니다. 🎜rrreee셀에 단색 채우기 설정
🎜셀을 색상으로 채우려면 다음을 수행합니다. 채우기
스타일 구조 사용: 🎜rrreee스타일 구조
🎜위 스타일을 설정하는 코드에서 테두리는 배열이고 <code>alignment
는 Style
구조에 의해 결정되는 구조입니다. 🎜rrreee 관련 권장 사항: 🎜Go 비디오 튜토리얼🎜🎜
type Style struct { Border []Border `json:"border"` Fill Fill `json:"fill"` Font *Font `json:"font"` Alignment *Alignment `json:"alignment"` Protection *Protection `json:"protection"` NumFmt int `json:"number_format"` DecimalPlaces int `json:"decimal_places"` CustomNumFmt *string `json:"custom_number_format"` Lang string `json:"lang"` NegRed bool `json:"negred"` }
NewSheet
메서드를 사용하여 새 Sheet2
워크시트를 만들었습니다. Sheet1
은 기본적으로 생성된 워크시트입니다. code>SetCellValue 메서드는 각각 Sheet2
워크시트의 A2
셀과 Sheet1B2
셀에 있습니다. /code> 테이블에 값을 설정하고 SetActiveSheet
메서드를 사용하여 Sheet2
워크시트를 기본 워크시트로 설정한 다음 마지막으로 SaveAs
를 호출합니다. code> 메소드를 사용하여 Excel에 데이터를 작성합니다. 문서 내용: 🎜rrreee실제 시나리오 재현🎜워크시트 만들기
🎜워크시트 이름은 대소문자를 구분합니다. :🎜rrreee기본적으로 생성된 워크시트 삭제
🎜기본적으로 생성된 Excel 문서에는 Sheet1, 이 기본 워크시트는 필요하지 않습니다. 지금은 이 워크시트를 삭제할 수 있습니다. 🎜rrreee<h3 id="셀-병합">셀 병합</h3>🎜Merge <code>Sheet1 code> 워크시트 상단 <code>F1:I2
영역의 셀: 🎜rrreee셀 스타일
🎜다음과 같이 셀에 대한 스타일 설정을 자주 접하게 됩니다. 셀의 배경색을 설정합니다. Excelize
라이브러리는 셀 스타일(NewStyle
및 SetCellStyle
)을 설정하는 다음 두 가지 방법을 제공합니다. 텍스트 가로 가운데 맞춤
🎜텍스트 가로 가운데 맞춤에는 정렬
스타일 구조가 필요합니다. 🎜rrreee🎜가로 가운데 맞춤은 가로
만 설정하면 됩니다. code > 값은 center
입니다. 🎜rrreee셀에 단색 채우기 설정
🎜셀을 색상으로 채우려면 다음을 수행합니다. 채우기
스타일 구조 사용: 🎜rrreee스타일 구조
🎜위 스타일을 설정하는 코드에서 테두리는 배열이고 <code>alignment
는 Style
구조에 의해 결정되는 구조입니다. 🎜rrreee 관련 권장 사항: 🎜Go 비디오 튜토리얼🎜🎜
위 내용은 Golang이 Excel 문서를 생성하는 방법을 자세히 설명하는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go에서는 정규식을 사용하여 타임스탬프를 일치시킬 수 있습니다. ISO8601 타임스탬프를 일치시키는 데 사용되는 것과 같은 정규식 문자열을 컴파일합니다. ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . regexp.MatchString 함수를 사용하여 문자열이 정규식과 일치하는지 확인합니다.

Go에서는 gorilla/websocket 패키지를 사용하여 WebSocket 메시지를 보낼 수 있습니다. 특정 단계: WebSocket 연결을 설정합니다. 문자 메시지 보내기: WriteMessage(websocket.TextMessage,[]byte("Message"))를 호출합니다. 바이너리 메시지 보내기: WriteMessage(websocket.BinaryMessage,[]byte{1,2,3})를 호출합니다.

1. SUM 함수는 열이나 셀 그룹의 숫자를 합하는 데 사용됩니다(예: =SUM(A1:J10)). 2. AVERAGE 함수는 열이나 셀 그룹에 있는 숫자의 평균을 계산하는 데 사용됩니다(예: =AVERAGE(A1:A10)). 3. COUNT 함수, 열이나 셀 그룹의 숫자나 텍스트 수를 세는 데 사용됩니다. 예: =COUNT(A1:A10) 4. IF 함수, 지정된 조건을 기반으로 논리적 판단을 내리고 결과를 반환하는 데 사용됩니다. 해당 결과.

Go와 Go 언어는 서로 다른 특성을 지닌 서로 다른 개체입니다. Go(Golang이라고도 함)는 동시성, 빠른 컴파일 속도, 메모리 관리 및 크로스 플랫폼 이점으로 유명합니다. Go 언어의 단점은 다른 언어에 비해 생태계가 덜 풍부하고 구문이 더 엄격하며 동적 타이핑이 부족하다는 점입니다.

메모리 누수로 인해 파일, 네트워크 연결, 데이터베이스 연결 등 더 이상 사용하지 않는 리소스를 닫는 방식으로 Go 프로그램 메모리가 지속적으로 증가할 수 있습니다. 더 이상 강력하게 참조되지 않는 경우 약한 참조를 사용하여 메모리 누수 및 가비지 수집 대상 개체를 방지합니다. go 코루틴을 사용하면 메모리 누수를 방지하기 위해 종료 시 코루틴 스택 메모리가 자동으로 해제됩니다.

Golang에서 오류 래퍼를 사용하면 원래 오류에 상황별 정보를 추가하여 새로운 오류를 생성할 수 있습니다. 이는 다양한 라이브러리나 구성 요소에서 발생하는 오류 유형을 통합하여 디버깅 및 오류 처리를 단순화하는 데 사용할 수 있습니다. 단계는 다음과 같습니다. error.Wrap 함수를 사용하여 원래 오류를 새 오류로 래핑합니다. 새 오류에는 원래 오류의 상황별 정보가 포함됩니다. fmt.Printf를 사용하면 래핑된 오류를 출력하여 더 많은 컨텍스트와 실행 가능성을 제공할 수 있습니다. 다양한 유형의 오류를 처리할 때 오류 유형을 통합하려면 오류.Wrap 함수를 사용하세요.

단위 테스트 동시 기능은 동시 환경에서 올바른 동작을 보장하는 데 도움이 되므로 매우 중요합니다. 동시 기능을 테스트할 때는 상호 배제, 동기화, 격리와 같은 기본 원칙을 고려해야 합니다. 동시 기능은 경쟁 조건을 시뮬레이션하고, 테스트하고, 결과를 확인하여 단위 테스트할 수 있습니다.

Go 언어에서 우선순위 고루틴을 생성하는 데는 두 가지 단계가 있습니다. 즉, 사용자 정의 고루틴 생성 기능을 등록하는 것(1단계)과 우선순위 값을 지정하는 것(2단계)입니다. 이러한 방식으로 다양한 우선순위를 가진 고루틴을 생성하고, 리소스 할당을 최적화하고, 실행 효율성을 향상시킬 수 있습니다.
