python 将目下的excel全部转xml文件到指定的目录
? ? ? ? 我們現在來實現將某個目錄下的所有excel文件轉成xml文件到指定的目錄中。新生成的xml文件名稱使用excel文件名。 當然這個的前提得會解析excel文件,上一篇文章說了python如何解析excel文件。這里使用python 自帶的xml庫:xml.dom來生成xml。
? ? ? ??
? ? ? ? 由于腳本比較簡單,就不細說了,代碼里也有比較詳細的注釋。先看看excel文件所在的目錄:
只需要將解析的代碼稍作修改添加生成xml的代碼就OK了。看看python腳本:
#! encoding=utf-8import xlrd import xml.dom.minidom import osdef open_excel(file):try:data = xlrd.open_workbook(file)return dataexcept Exception, e:print str(e)def translate_excel_to_xml(excel_absolute_path, name, generate_xml_dir, colnnameindex=0, by_index=0):#解析excel文件data = open_excel(excel_absolute_path)#獲取需要的工作表table = data.sheets()[by_index] #行數nrows = table.nrows#列數ncols = table.ncols#創建dom文檔對象doc = xml.dom.minidom.Document()#創建根元素info = doc.createElement('info')#將根元素添加到文檔中區doc.appendChild(info)for nrow in range(4, nrows):#創建元素item = doc.createElement('item')for ncol in range(0, ncols):#colnames = table.col_values(ncol)#print colnames # print table.cell(nrow, ncol).valuekey = u"%s" % table.cell(0, ncol).valuevalue = table.cell(nrow, ncol).valueif isinstance(value, float):value = '%0d' % value # print type(key), type(value)#將數據都作為xml中元素的屬性,屬性名就是第一行的值,屬性值就是某一行某一列的值item.setAttribute(key.encode('utf-8'), value.encode('utf-8')) # print table.cell(0, ncol).value#將此元素作為根元素的子節點info.appendChild(item)#要生成的xml文件名generate_xml_name = name.strip().split('.')[0] + '.xml'#要生成的xml文件到某個目錄的絕對路徑geneate_xml_dir = os.path.join(generate_xml_dir, generate_xml_name)f = open(geneate_xml_dir, 'w') # doc.writexml(f)f.write(doc.toprettyxml()) #可以使生成xml有好看的格式,要是不需要,可以使用上一行的代碼f.close()def find_assign_xlsx(xlsx_path, generate_xml_dir):for name in os.listdir(xlsx_path):if name.endswith('.xlsx'):#生成excel文件的絕對路徑excel_absolute_path = os.path.join(xlsx_path, name)#解析excel并轉成xmltranslate_excel_to_xml(excel_absolute_path, name, generate_xml_dir)if __name__ == "__main__":excel_src_path = r'D:\mobile_game_dir\newSVN\callOfSteel\trunk\Design\數據'generate_xml_dir = r'D:\data'find_assign_xlsx(excel_src_path.decode('utf-8'), generate_xml_dir)代碼其實是很簡單的,代碼里有很詳細的注釋了,這里需要特別注意的是,由于目錄路徑很有中文,python內部使用的unicode編碼,這Windows的簡體中文版本使用的中文編碼不相同,需要將路徑轉成unicode編碼,還有一種寫法,這樣也行find_assign_xlsx(u'D://mobile_game_dir//newSVN//callOfSteel//trunk//Design//數據', generate_xml_dir),這里沒用使用r,python會將路徑名轉換,我直接寫成左雙斜杠來避免路徑名出錯,這個可以自己隨便寫。
? ? ? ? 我這里把生成的xml文件放到D盤下的data目錄中了,看看生成后的data目錄吧:
很方便吧,所有的excel文件都轉成xml了。為了驗證是否正確,我們隨便打開一個excel文件看看:
再看看D盤data目錄下的道具.xml文件:
??
? ? ? ? 可以看的出來,沒什么問題。由于python的簡明和第三方庫強大,寫這種小腳本是非常方便和簡單的。
總結
以上是生活随笔為你收集整理的python 将目下的excel全部转xml文件到指定的目录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你被凤姐套路了么?
- 下一篇: python爬取起点中文网小说