2 回答
TA贡献1779条经验 获得超6个赞
感谢您的反馈和时间来解决我的查询。
最后,我借助以下代码实现了我的目标。它有点复杂,但它对我有用,我希望它对其他人也有帮助。
func datasubmit(w http.ResponseWriter, req *http.Request) {
nm := req.FormValue("name")
ge := req.FormValue("gender")
ag := req.FormValue("age")
sliNm := strings.Split(nm, ";") // creating slice if ";" occur then it treat as another element of slice
var final string // again creating string to fill "\n"
for _, v := range sliNm {
final += v
final = final + "\n"
}
fmt.Println(final)
var data = M{"Name": final, "GENDER": ge, "AGE": ag} // data as map
tpl.ExecuteTemplate(w, "index.gohtml", data)
f, err := excelize.OpenFile("./Book99.xlsx")
if err != nil {
fmt.Println(err)
return
}
sheetName := f.GetSheetName(0)
// Set cell A1 to Wrapp
style, err := f.NewStyle(&excelize.Style{
Alignment: &excelize.Alignment{
WrapText: true,
},
})
if err != nil {
panic(err)
}
fmt.Println(sheetName)
rows, err := f.GetRows(sheetName)
rlast := len(rows)
fmt.Println(rows)
fmt.Println(rlast)
f.SetCellStyle(sheetName, fmt.Sprintf("A%d", rlast+1), fmt.Sprintf("A%d", rlast+1), style) // setting cell style for newly creating cell with every iteration
fmt.Println(data["Name"])
f.SetCellValue(sheetName, fmt.Sprintf("A%d", rlast+1), data["Name"])
f.SetCellValue(sheetName, fmt.Sprintf("B%d", rlast+1), data["GENDER"])
f.SetCellValue(sheetName, fmt.Sprintf("C%d", rlast+1), data["AGE"])
err = f.SaveAs("./Book99.xlsx")
if err != nil {
fmt.Println(err)
}
}
此代码适用于我。假设输入是 jim;jam;==>我的o / p在excel的单个单元格中如下所示。吉姆果酱
另外,是的,执行模板是没有意义的,但我创建它只是为了在网站上查看最近提交的数据。
TA贡献1777条经验 获得超3个赞
如果我正确阅读了您的查询,我相信您正在询问如何将新文本行添加到Excel单元格中(您将在Excel应用程序中使用ALT + Enter执行此操作)。数据的来源似乎与您的问题无关。
在 Excel(在 Windows 上)中,单元格中的多行由换行符(字符0xA或转到中)拆分。但是,当您添加换行符时,Excel会自动将单元格设置为“换行”(如果不这样做,则换行符存在但不显示)中,这有点复杂。\n
以下是如何在Go中实现的示例;每次运行应用程序时,它都会向单元格 A1 添加一个新行。请注意,我没有更改单元格高度,因此您需要执行此操作以使额外的行可见:
func main() {
f, err := excelize.OpenFile("./Book99.xlsx")
if err != nil {
panic(err)
}
sheetName := f.GetSheetName(0)
// Set cell A1 to Wrap
style, err := f.NewStyle(&excelize.Style{
Alignment: &excelize.Alignment{
WrapText: true,
},
})
if err != nil {
panic(err)
}
if err := f.SetCellStyle("Sheet1", "A1", "A1", style); err != nil {
panic(err)
}
// Get cell value, add new name and save
v, err := f.GetCellValue(sheetName, "a1")
if err != nil {
panic(err)
}
fmt.Printf("%x\n", v) // Output as hex so you can see how the line break is encoded
err = f.SetCellValue(sheetName, "a1", v + "\n" + "Joe Bloggs")
if err != nil {
panic(err)
}
err = f.SaveAs("./Book99.xlsx")
if err != nil {
panic(err)
}
}
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报