用golang写一个读取excel文件,并根据内容生成vcard格式,包含手机,住址,姓名,公司,备注,以便于导入手机
时间: 2024-03-28 15:42:30 浏览: 88
浅谈Golang是如何读取文件内容的(7种)
好的,以下是一个使用Golang读取Excel文件并生成包含更多信息的vCard格式的示例程序:
```go
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("contacts.xlsx")
if err != nil {
log.Fatal(err)
}
// 读取第一个工作表中的所有行
rows, err := f.GetRows("Sheet1")
if err != nil {
log.Fatal(err)
}
// 创建一个CSV writer,用于写入vCard文件
outFile, err := os.Create("contacts.vcf")
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
writer := csv.NewWriter(outFile)
// 遍历所有行,生成vCard文件并写入CSV文件
for _, row := range rows {
name := row[0]
company := row[1]
address := row[2]
phone := row[3]
email := row[4]
notes := row[5]
// 生成vCard字符串
vcard := fmt.Sprintf("BEGIN:VCARD\nVERSION:3.0\nN:%s\nORG:%s\nADR:%s\nTEL:%s\nEMAIL:%s\nNOTE:%s\nEND:VCARD",
name, company, address, phone, email, notes)
// 将vCard写入CSV文件
err := writer.Write([]string{vcard})
if err != nil {
log.Fatal(err)
}
}
writer.Flush()
if err := writer.Error(); err != nil {
log.Fatal(err)
}
}
```
这个程序与之前的程序类似,但是提取了更多的信息,包括公司、住址和备注。然后,程序使用这些信息生成vCard字符串,并将它们写入CSV文件,最终导出为.vcf格式的vCard文件。您可以将生成的contacts.vcf文件发送到手机,然后使用手机的联系人应用程序导入这些联系人信息。
阅读全文