將數(shù)據(jù)從xml導(dǎo)入到Excel

本文介紹從xml文件向excel導(dǎo)入數(shù)據(jù)時(shí),超過(guò)15位數(shù)字顯示不全的解決方法。
在上一篇文章提及到,從xml文件向excel導(dǎo)入數(shù)據(jù)之后,由于Excel最多只能識(shí)別到15位的數(shù)值,由于身份證號(hào)碼長(zhǎng)度為18位,超過(guò)了15位,所以其后三位在Excel中會(huì)顯示為0。本文將介紹兩種解決思路。

1. 建立xsd文件對(duì)xml文件結(jié)構(gòu)進(jìn)行定義
該方法參考了stackoverflow上的提問(wèn)“Importing XML files into excel with numbers of over 15 digits”,鏈接如下:
https://stackoverflow.com/questions/58028688/importing-xml-files-into-excel-with-numbers-of-over-15-digits
1.1 范例xml文件有如下內(nèi)容
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <number>12345678901234567890</number>
(將以上內(nèi)容復(fù)制進(jìn)新建txt文檔,保存后后綴改為.xml即可)
1.2 新建xsd文件,內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="number" type="xs:string" /> </xs:schema>
(方法同1.1,后綴名改為.xsd)
1.3? 導(dǎo)入映射
新建xls文件,依次打開(kāi)開(kāi)發(fā)工具 — 源 — XML映射 — 添加,將xsd文件添加進(jìn)來(lái),點(diǎn)擊確定

1.4 建立映射
選擇A1單元格,雙擊紅框內(nèi)number,可見(jiàn)A1單元格出現(xiàn)藍(lán)色方框


1.5 導(dǎo)入xml
進(jìn)入開(kāi)發(fā)工具 – 導(dǎo)入,導(dǎo)入xml數(shù)據(jù)

1.6 結(jié)果?
可以看到數(shù)據(jù)已經(jīng)完整導(dǎo)入

2.替換法
2.1 使用記事本打開(kāi)xml文件,觀(guān)察文件結(jié)構(gòu),可以看到,身份證號(hào)碼均以“</身份證號(hào)碼”標(biāo)簽結(jié)尾,使用替換功能,將“</身份證號(hào)碼”全部替換為“A</身份證號(hào)碼”,即,為每一個(gè)身份證號(hào)碼的結(jié)尾添加字母A

2.2 直接用Excel打開(kāi)該xml文件,可以看到,“身份證號(hào)碼”+“A”的組合會(huì)被識(shí)別為字符串,所有的字符均得到保留

2.3 此時(shí)逐個(gè)刪除“A”,就可以還原身份證號(hào)碼。為便于批量操作,可以寫(xiě)一個(gè)VBA宏,綁定快捷鍵,即可批量對(duì)選中單元格的最后一位進(jìn)行刪除。
Sub 宏1()
'
' 宏1 宏
' 刪除最后一位
'
' 快捷鍵: Ctrl+q
'
Dim a, b
For Each cell In Selection
a = cell.Value
If Len(a) < 1 Then
GoTo re
End If
b = Mid(a, 1, Len(a) - 1)
cell.Value = b
re:
Next
End Sub