func init() {
fmt.Println("===init==")
//err := ole.CoInitializeEx(0, ole.COINIT_MULTITHREADED)
err :=ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED|ole.COINIT_SPEED_OVER_MEMORY)
//err :=ole.CoInitialize(0)
//defer ole.CoUninitialize()
if err != nil {
fmt.Println("CoInitialize Error", err)
//panic(err)
}
}
func (fileS *FileScanner)SaveExcel(filePath string, cityId int)(path []CityExcel,err error){
filePath= getCurrentDirectory()+"/"+filePath
file07 := filePath+".xlsx"
fmt.Println("333333333",file07)
fileS.xlsx03Toxls07(file07,filePath)
fmt.Println(file07)
fmt.Println(filePath)
w, err := xlsx.OpenFile(file07)
if err !=nil{
fmt.Println("23111111111111",err)
}
sheet :=w.Sheets[0]
sht := make([]Ticket,0)
if sheet.MaxRow != 1 {
for i,row := range sheet.Rows{
if i > 0{
ticket :=Ticket{}
ticket.CreatedAt = time.Now().Format("2006-01-02 15:04:05")
ticket.CityId = cityId
for k, cell := range row.Cells{
if k == 2{
ticket.ConsumerId = cell.Value
}
if k == 1{
ticket.Certificate = cell.Value
}
if k == 0{
ticket.Name = cell.Value
}
if k == 6{
ticket.Date = cell.Value
}
if k == 7{
ticket.Time = cell.Value
}
if k == 4{
ticket.Departure = cell.Value
}
if k == 5{
ticket.Destination = cell.Value
}
if k == 3{
ticket.TrainNum = cell.Value
}
}
if ticket.ConsumerId != ""{
ok,err := ticket.AddTicket()
if err != nil{
return nil,err
}
fmt.Println(ok,"okokokok##################")
//時間增量回傳
if ok {
sht = append(sht,ticket)
}
}
}
}
}
path,err =fileS.CreateFtpPath(sht)
fmt.Println("shshshshshshsahsh!!!!!!",sht)
return path,err
}
func (fileS *FileScanner) xlsx03Toxls07(path07, path03 string) {
wordApplication, err := oleutil.CreateObject("excel.Application")
wordAppDispatch, err := wordApplication.QueryInterface(ole.IID_IDispatch)
workBookDis = oleutil.MustGetProperty(wordAppDispatch, "WorkBooks").ToIDispatch()
defer wordApplication.Release()
path07 = strings.Replace(path07, "/", "\\", -1)
fmt.Println("path03 before",path03)
path03 = strings.Replace(path03, "/", "\\", -1)
fmt.Println(path07,"path07")
fmt.Println("path03:",path03,workBookDis)
fmt.Println(workBookDis,"workwork")
document, err := oleutil.CallMethod(workBookDis, "Open", path03)
if err !=nil{
fmt.Println("799999",err)
}
fmt.Println(document,"document")
fmt.Println("open,err:", err)
disDis := document.ToIDispatch()
fmt.Println(disDis,"disDis")
// 2007版xlsx轉 2003版xls 值: 56
// 2003版xls 轉 2007版xlsx 值: 51
result,err := oleutil.CallMethod(disDis, "SaveAs", path07, 51)
if err !=nil{
fmt.Println("CallMethod faild: ",result,err)
}
defer oleutil.MustCallMethod(disDis, "Close", false)
}

請問該怎么修改呢,我是想把xls檔案介面上傳之后轉換為xlsx再進行讀取存盤,但是總是初始化錯誤和空地址指標
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/142254.html
標籤:go語言
