golang xlsx

2018-05-14  本文已影响0人  Feng_Sir
package main

import (
    "net/http"
    "io/ioutil"
    "fmt"
    //"encoding/json"
    "net/url"
    "git.oschina.net/xujiang/rongapi-common/utils"
    "github.com/tealeg/xlsx"
    "encoding/json"
    "time"
)

const (
    RemoteUrl = "http://api.jkcredit.com:8080/mobile?"
    Appid     = "jiaokeyuan"
    Key       = "bedb9297c7bde73d74364ec3d9b4d3ae"
)

type request struct {
    Name   string //姓名
    IdCode string //身份证号
    Phone  string //手机号
}

func main() {
    uns := time.Now().UnixNano()
    fmt.Println(uns ) //纳秒
    fmt.Println(uns / 1e6) //纳秒转毫秒
    fmt.Println(uns / 1e9) //纳秒转秒
    newfile := xlsx.NewFile()
    newfileSheet, _ := newfile.AddSheet("Sheet1")
    newfileSheetRow := newfileSheet.AddRow()
    newfileSheetRowCell := newfileSheetRow.AddCell()
    newfileSheetRowCell.Value = "idcard"
    newfileSheetRowCell.Row.AddCell().Value = "mobile"
    newfileSheetRowCell.Row.AddCell().Value = "name"
    newfileSheetRowCell.Row.AddCell().Value = "code"
    newfileSheetRowCell.Row.AddCell().Value = "message"
    newfileSheetRowCell.Row.AddCell().Value = "流水号"
    newfileSheetRowCell.Row.AddCell().Value = "耗时"


    xlsxFile, _ := xlsx.OpenFile("E:\\apihub\\接口文档\\运营商三要素核查接口文档内部对外\\测试0514.xlsx")

    for _, sheet := range xlsxFile.Sheets {
        for _, row := range sheet.Rows {
            if row.Cells[0].String() == "idcard" || row.Cells[1].String() == "mobile" || row.Cells[2].String() == "name" {
                continue
            }
            fmt.Println(row.Cells[0].String(), row.Cells[1].String(), row.Cells[2].String())
            r := request{row.Cells[2].String(), row.Cells[0].String(), row.Cells[1].String()}
            codeMessage := requesturl(&r)
            newfileSheetRow = newfileSheet.AddRow()
            newfileSheetRowCell = newfileSheetRow.AddCell()
            newfileSheetRowCell.Value = codeMessage.Request.IdCode
            newfileSheetRowCell.Row.AddCell().Value = codeMessage.Request.Phone
            newfileSheetRowCell.Row.AddCell().Value = codeMessage.Request.Name
            newfileSheetRowCell.Row.AddCell().Value = codeMessage.ResultCode
            newfileSheetRowCell.Row.AddCell().Value = codeMessage.ResultMsg
            newfileSheetRowCell.Row.AddCell().Value = codeMessage.TransactionID
            newfileSheetRowCell.Row.AddCell().Value = fmt.Sprint(codeMessage.DTime)

        }
    }
    err := newfile.Save("E:\\apihub\\接口文档\\运营商三要素核查接口文档内部对外\\MyXLSXFile.xlsx")
    fmt.Println(err)
}

func requesturl(r *request) *CodeMessage {
    startTime := time.Now().UnixNano()
    //r := request{}
    //r.Name = "钱文琦"
    //r.IdCode = "4101821238891283"
    //r.Phone = "17692341236"
    values := make(url.Values, 0)
    values.Add("Appid", Appid)
    values.Add("Name", r.Name)
    values.Add("Phone", r.Phone)
    values.Add("IdCode", r.IdCode)
    md5 := utils.Md5(r.IdCode + r.Name + r.Phone + Key)
    values.Add("Sign", md5)

    if resp, err := http.Post(RemoteUrl+values.Encode(),
        "", nil); err == nil {
        defer resp.Body.Close()
        resultbyte, _ := ioutil.ReadAll(resp.Body)
        endTime := time.Now().UnixNano()
        //log.Println(string(resultbyte))
        fmt.Println(string(resultbyte))

        codeMessage := new(CodeMessage)
        if err = json.Unmarshal(resultbyte, codeMessage); err == nil {
            codeMessage.DTime = endTime - startTime
            codeMessage.Request = *r
            return codeMessage
        }

    } else {
        return nil
    }
    return nil
}

type CodeMessage struct {
    ResultCode    string
    ResultMsg     string
    TransactionID string
    DTime         int64 //差值
    Request       request
}
上一篇下一篇

猜你喜欢

热点阅读