20
0

fix some europe character error

This commit is contained in:
Liu Ming 2016-06-20 09:39:08 +08:00
parent 6f63f448b8
commit 0b5fd56f62
2 changed files with 60 additions and 46 deletions

View File

@ -177,8 +177,13 @@ func (w *WorkBook) get_string(buf io.ReadSeeker, size uint16) string {
} }
} else { } else {
var bts = make([]byte, size) var bts = make([]byte, size)
var bts1 = make([]uint16, size)
binary.Read(buf, binary.LittleEndian, &bts) binary.Read(buf, binary.LittleEndian, &bts)
res = string(bts) for k, v := range bts {
bts1[k] = uint16(v)
}
runes := utf16.Decode(bts1)
res = string(runes)
} }
if flag&0x8 != 0 { if flag&0x8 != 0 {
var bts []byte var bts []byte

View File

@ -1,14 +1,13 @@
package xls package xls
import ( import (
"bytes"
"fmt" "fmt"
"os"
"testing" "testing"
"unicode/utf16"
) )
func TestOpen(t *testing.T) { func TestOpen(t *testing.T) {
if xlFile, err := Open("reportComuni.xls", "utf-8"); err == nil { if xlFile, err := Open("Preisliste.xls", "utf-8"); err == nil {
if sheet1 := xlFile.GetSheet(0); sheet1 != nil { if sheet1 := xlFile.GetSheet(0); sheet1 != nil {
fmt.Println("Total Lines ", sheet1.MaxRow, sheet1.Name) fmt.Println("Total Lines ", sheet1.MaxRow, sheet1.Name)
for i := 0; i < int(sheet1.MaxRow); i++ { for i := 0; i < int(sheet1.MaxRow); i++ {
@ -28,50 +27,60 @@ func TestOpen(t *testing.T) {
} }
} }
func TestOpen1(t *testing.T) { func TestEuropeString(t *testing.T) {
xlFile, _ := Open("000.xls", "") bts := []byte{66, 233, 114, 232}
for i := 0; i < xlFile.NumSheets(); i++ { var bts1 = make([]uint16, 4)
fmt.Println(xlFile.GetSheet(i).Name) for k, v := range bts {
sheet := xlFile.GetSheet(i) bts1[k] = uint16(v)
row := sheet.Rows[1]
for i, col := range row.Cols {
fmt.Println(i, col.String(xlFile))
} }
} runes := utf16.Decode(bts1)
// sheet1 := xlFile.GetSheet(0) fmt.Println(string(runes))
// fmt.Println(sheet1.Name)
// fmt.Print(sheet1.Rows)
// for k, row1 := range sheet1.Rows {
// // row1 := sheet1.Rows[1]
// fmt.Printf("\n[%d]", k)
// for _, col1 := range row1.Cols {
// // col1 := row1.Cols[0]
// fmt.Print(col1.LastCol())
// fmt.Print(" ")
// }
// }
} }
func TestBof(t *testing.T) { // func TestOpen1(t *testing.T) {
b := new(bof) // xlFile, _ := Open("000.xls", "")
b.Id = 0x41E // for i := 0; i < xlFile.NumSheets(); i++ {
b.Size = 55 // fmt.Println(xlFile.GetSheet(i).Name)
buf := bytes.NewReader([]byte{0x07, 0x00, 0x19, 0x00, 0x01, 0x22, 0x00, 0xE5, 0xFF, 0x22, 0x00, 0x23, 0x00, 0x2C, 0x00, 0x23, 0x00, 0x23, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3B, 0x00, 0x22, 0x00, 0xE5, 0xFF, 0x22, 0x00, 0x5C, 0x00, 0x2D, 0x00, 0x23, 0x00, 0x2C, 0x20, 0x00}) // sheet := xlFile.GetSheet(i)
wb := new(WorkBook) // row := sheet.Rows[1]
wb.Formats = make(map[uint16]*Format) // for i, col := range row.Cols {
wb.parseBof(buf, b, b, 0) // fmt.Println(i, col.String(xlFile))
} // }
// }
// // sheet1 := xlFile.GetSheet(0)
// // fmt.Println(sheet1.Name)
// // fmt.Print(sheet1.Rows)
// // for k, row1 := range sheet1.Rows {
// // // row1 := sheet1.Rows[1]
// // fmt.Printf("\n[%d]", k)
// // for _, col1 := range row1.Cols {
// // // col1 := row1.Cols[0]
// // fmt.Print(col1.LastCol())
// // fmt.Print(" ")
// // }
// // }
// }
func TestMaxRow(t *testing.T) { // func TestBof(t *testing.T) {
xlFile, err := Open("Table.xls", "utf-8") // b := new(bof)
if err != nil { // b.Id = 0x41E
fmt.Fprintf(os.Stderr, "Failure: %v\n", err) // b.Size = 55
t.Error(err) // buf := bytes.NewReader([]byte{0x07, 0x00, 0x19, 0x00, 0x01, 0x22, 0x00, 0xE5, 0xFF, 0x22, 0x00, 0x23, 0x00, 0x2C, 0x00, 0x23, 0x00, 0x23, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3B, 0x00, 0x22, 0x00, 0xE5, 0xFF, 0x22, 0x00, 0x5C, 0x00, 0x2D, 0x00, 0x23, 0x00, 0x2C, 0x20, 0x00})
} // wb := new(WorkBook)
// wb.Formats = make(map[uint16]*Format)
// wb.parseBof(buf, b, b, 0)
// }
if sheet1 := xlFile.GetSheet(0); sheet1 != nil { // func TestMaxRow(t *testing.T) {
if sheet1.MaxRow != 11 { // xlFile, err := Open("Table.xls", "utf-8")
t.Errorf("max row is error,is %d instead of 11", sheet1.MaxRow) // if err != nil {
} // fmt.Fprintf(os.Stderr, "Failure: %v\n", err)
} // t.Error(err)
} // }
// if sheet1 := xlFile.GetSheet(0); sheet1 != nil {
// if sheet1.MaxRow != 11 {
// t.Errorf("max row is error,is %d instead of 11", sheet1.MaxRow)
// }
// }
// }