如何使用Go语言解析XML数据并提取Excel Worksheet中的数据?

如何使用go语言解析xml数据并提取excel worksheet中的数据?

关于go读取xml中worksheet的问题

为了正确提取excel中worksheet结构内的数据,可以使用标准库encoding/xml进行解析。解析的具体步骤如下:

  1. 定义与xml结构相对应的go结构体。
  2. 使用xml.unmarshal()函数将xml数据解析到结构体中。
  3. 遍历结构体中的字段来提取所需的数据。
package main

import (
    "encoding/xml"
    "fmt"
)

type Workbook struct {
    XMLName                xml.Name               `xml:"Workbook"`
    Text                   string                 `xml:",chardata"`
    Xmlns                  string                 `xml:"xmlns,attr"`
    O                      string                 `xml:"o,attr"`
    X                      string                 `xml:"x,attr"`
    Ss                     string                 `xml:"ss,attr"`
    Html                   string                 `xml:"html,attr"`
    DocumentProperties     DocumentProperties     `xml:"DocumentProperties"`
    OfficeDocumentSettings OfficeDocumentSettings `xml:"OfficeDocumentSettings"`
    ExcelWorkbook          ExcelWorkbook          `xml:"ExcelWorkbook"`
    Styles                 Styles                 `xml:"Styles"`
    Worksheet              Worksheet              `xml:"Worksheet"`
}

type DocumentProperties struct {
    Text   string `xml:",chardata"`
    Xmlns  string `xml:"xmlns,attr"`
    Author struct {
        Text string `xml:",chardata"`
    } `xml:"Author"`
    LastAuthor struct {
        Text string `xml:",chardata"`
    } `xml:"LastAuthor"`
    Created struct {
        Text string `xml:",chardata"`
    } `xml:"Created"`
    LastSaved struct {
        Text string `xml:",chardata"`
    } `xml:"LastSaved"`
    Version struct {
        Text string `xml:",chardata"`
    } `xml:"Version"`
}

type OfficeDocumentSettings struct {
    Text     string `xml:",chardata"`
    Xmlns    string `xml:"xmlns,attr"`
    AllowPNG struct {
        Text string `xml:",chardata"`
    } `xml:"AllowPNG"`
}

type ExcelWorkbook struct {
    Text         string `xml:",chardata"`
    Xmlns        string `xml:"xmlns,attr"`
    WindowHeight struct {
        Text string `xml:",chardata"`
    } `xml:"WindowHeight"`
    WindowWidth struct {
        Text string `xml:",chardata"`
    } `xml:"WindowWidth"`
    WindowTopX struct {
        Text string `xml:",chardata"`
    } `xml:"WindowTopX"`
    WindowTopY struct {
        Text string `xml:",chardata"`
    } `xml:"WindowTopY"`
    ProtectStructure struct {
        Text string `xml:",chardata"`
    } `xml:"ProtectStructure"`
    ProtectWindows struct {
        Text string `xml:",chardata"`
    } `xml:"ProtectWindows"`
}

type Styles struct {
    Text  string `xml:",chardata"`
    Style []struct {
        Text      string `xml:",chardata"`
        ID        string `xml:"ID,attr"`
        Name      string `xml:"Name,attr"`
        Parent    string `xml:"Parent,attr"`
        Alignment struct {
            Text       string `xml:",chardata"`
            Vertical   string `xml:"Vertical,attr"`
            Horizontal string `xml:"Horizontal,attr"`
        } `xml:"Alignment"`
        Borders struct {
            Text string `xml:",chardata"`
        } `xml:"Borders"`
        Font struct {
            Text     string `xml:",chardata"`
            FontName string `xml:"FontName,attr"`
            CharSet  string `xml:"CharSet,attr"`
            Size     string `xml:"Size,attr"`
            Color    string `xml:"Color,attr"`
        } `xml:"Font"`
        Interior struct {
            Text    string `xml:",chardata"`
            Color   string `xml:"Color,attr"`
            Pattern string `xml:"Pattern,attr"`
        } `xml:"Interior"`
        NumberFormat struct {
            Text   string `xml:",chardata"`
            Format string `xml:"Format,attr"`
        } `xml:"NumberFormat"`
        Protection struct {
            Text      string `xml:",chardata"`
            Protected string `xml:"Protected,attr"`
        } `xml:"Protection"`
    } `xml:"Style"`
}

type Worksheet struct {
    Text  string `xml:",chardata"`
    Name  string `xml:"Name,attr"`
    Table struct {
        Text                string `xml:",chardata"`
        ExpandedColumnCount string `xml:"ExpandedColumnCount,attr"`
        ExpandedRowCount    string `xml:"ExpandedRowCount,attr"`
        FullColumns         string `xml:"FullColumns,attr"`
        FullRows            string `xml:"FullRows,attr"`
        DefaultColumnWidth  string `xml:"DefaultColumnWidth,attr"`
        DefaultRowHeight    string `xml:"DefaultRowHeight,attr"`
        Column              []struct {
            Text    string `xml:",chardata"`
            StyleID string `xml:"StyleID,attr"`
            Width   string `xml:"Width,attr"`
            Span    string `xml:"Span,attr"`
            Index   string `xml:"Index,attr"`
        } `xml:"Column"`
        Row []struct {
            Text          string `xml:",chardata"`
            AutoFitHeight string `xml:"AutoFitHeight,attr"`
            StyleID       string `xml:"StyleID,attr"`
            Cell          []struct {
                Text    string `xml:",chardata"`
                StyleID string `xml:"StyleID,attr"`
                Data    struct {
                    Text string `xml:",chardata"`
                    Type string `xml:"Type,attr"`
                } `xml:"Data"`
            } `xml:"Cell"`
        } `xml:"Row"`
    } `xml:"Table"`
    WorksheetOptions struct {
        Text      string `xml:",chardata"`
        Xmlns     string `xml:"xmlns,attr"`
        PageSetup struct {
            Text   string `xml:",chardata"`
            Header struct {
                Text   string `xml:",chardata"`
                Margin string `xml:"Margin,attr"`
            } `xml:"Header"`
            Footer struct {
                Text   string `xml:",chardata"`
                Margin string `xml:"Margin,attr"`
            } `xml:"Footer"`
            PageMargins struct {
                Text   string `xml:",chardata"`
                Bottom string `xml:"Bottom,attr"`
                Left   string `xml:"Left,attr"`
                Right  string `xml:"Right,attr"`
                Top    string `xml:"Top,attr"`
            } `xml:"PageMargins"`
        } `xml:"PageSetup"`
        Unsynced struct {
            Text string `xml:",chardata"`
        } `xml:"Unsynced"`
        Print struct {
            Text             string `xml:",chardata"`
            ValidPrinterInfo struct {
                Text string `xml:",chardata"`
            } `xml:"ValidPrinterInfo"`
            PaperSizeIndex struct {
                Text string `xml:",chardata"`
            } `xml:"PaperSizeIndex"`
            HorizontalResolution struct {
                Text string `xml:",chardata"`
            } `xml:"HorizontalResolution"`
            VerticalResolution struct {
                Text string `xml:",chardata"`
            } `xml:"VerticalResolution"`
        } `xml:"Print"`
        Selected struct {
            Text string `xml:",chardata"`
        } `xml:"Selected"`
        Panes struct {
            Text string `xml:",chardata"`
            Pane struct {
                Text   string `xml:",chardata"`
                Number struct {
                    Text string `xml:",chardata"`
                } `xml:"Number"`
                ActiveRow struct {
                    Text string `xml:",chardata"`
                } `xml:"ActiveRow"`
                ActiveCol struct {
                    Text string `xml:",chardata"`
                } `xml:"ActiveCol"`
            } `xml:"Pane"`
        } `xml:"Panes"`
        ProtectObjects struct {
            Text string `xml:",chardata"`
        } `xml:"ProtectObjects"`
        ProtectScenarios struct {
            Text string `xml:",chardata"`
        } `xml:"ProtectScenarios"`
    } `xml:"WorksheetOptions"`
}

func main() {
    var book Workbook
    err := xml.Unmarshal([]byte(xmldata), &book)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(book.Worksheet.Table.Row)
}

var xmldata = `
 <?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"

以上就是如何使用Go语言解析XML数据并提取Excel Worksheet中的数据?的详细内容,更多请关注其它相关文章!