Notice

使用以下脚本需要安装 openpyxllxml 两个库。

string.xml转成Excel文件

  1. """
  2. 将 Android string.xml 文件中的文本转换成 Excel 表格并保存到文件。
  3. 使用方法:python android_string_to_excel.py -f strings.xml [-o outfile_name]
  4. -f: 要处理的 Android string.xml 文件路径.
  5. -o: 输出文件路径,如果未指定,则默认为 'strings.xlsx'.
  6. """
  7. import os
  8. import argparse
  9. import openpyxl
  10. from lxml import etree
  11. def printUsage():
  12. """print usage and exit"""
  13. usage = '''Usage:
  14. python android_string_to_excel.py -f strings.xml [-o outfile_name]
  15. '''
  16. print(usage)
  17. exit(-1)
  18. parser = argparse.ArgumentParser(description='Convert Android string.xml to Excel')
  19. parser.add_argument('-f', '--file',
  20. type=str,
  21. required=True,
  22. help='Android string.xml file path')
  23. parser.add_argument('-o', '--output',
  24. type=str,
  25. help='Output file name, default is "strings.xlsx"')
  26. args = parser.parse_args()
  27. xml_path = args.file
  28. out_file = args.output or 'strings.xlsx'
  29. if not os.path.isfile(xml_path):
  30. print(f'Error: {xml_path} is not a valid file!')
  31. printUsage()
  32. try:
  33. tree = etree.parse(xml_path)
  34. except etree.ParseError as e:
  35. print(f'Error: cannot parse XML at {xml_path}, {e}')
  36. exit(-1)
  37. root = tree.getroot()
  38. workbook = openpyxl.Workbook()
  39. sheet = workbook.active
  40. col_idx = 1
  41. headers = ['key', 'value']
  42. for col_idx, header in enumerate(headers, 1):
  43. sheet.cell(row=1, column=col_idx, value=header)
  44. for row_idx, child in enumerate(root, 2):
  45. key = child.attrib['name']
  46. value = child.text.strip() if child.text else ''
  47. sheet.cell(row=row_idx, column=1, value=key)
  48. sheet.cell(row=row_idx, column=2, value=value)
  49. workbook.save(out_file)
  50. print(f'{xml_path} converted and saved to {out_file}.')

Excel生成string.xml文件

  1. import argparse
  2. import xml.etree.ElementTree as ET
  3. from openpyxl import load_workbook
  4. parser = argparse.ArgumentParser()
  5. parser.add_argument('-f', '--file', type=str, required=True,
  6. help='Excel file path')
  7. parser.add_argument('-s', '--sheet', type=str, default='Sheet1',
  8. help='Sheet name in Excel file, default is "Sheet1"')
  9. parser.add_argument('-k', '--key', type=int, default=1,
  10. help='Index of key column in Excel file, default is 1')
  11. parser.add_argument('-v', '--value', type=int, default=2,
  12. help='Index of value column in Excel file, default is 2')
  13. parser.add_argument('-o', '--output', type=str, default='strings.xml',
  14. help='Output file name, default is "strings.xml"')
  15. args = parser.parse_args()
  16. def excel_to_xml(excel_file, sheet_name, key_index, value_index, output_file):
  17. workbook = load_workbook(filename=excel_file)
  18. worksheet = workbook[sheet_name]
  19. root = ET.Element("resources")
  20. for row in worksheet.values:
  21. key = str(row[key_index-1])
  22. value = str(row[value_index-1])
  23. item = ET.SubElement(root, "string", name=key)
  24. item.text = value
  25. tree = ET.ElementTree(root)
  26. tree.write(output_file, encoding='utf-8')
  27. excel_to_xml(args.file, args.sheet, args.key, args.value, args.output)

Android string.xml与Excel的互相转换的更多相关文章

  1. Android string.xml error: Apostrophe not preceded by \

    Android string.xml error: Apostrophe not preceded by \ 遇到了这个错误,编译无法通过 error: Apostrophe not preceded ...

  2. 【Android】android string.xml前后加空格的技巧

    android string.xml 文字中间加入空格 <string name="password">密    码</string> &#160 ...

  3. android string.xml %问题

    反复检查后发现是string.xml中的 % 导致编译失败, 这是由于新的SDK采用了新版本的aapt(Android项目编译器),这个版本的aapt编译起来会比老版本更加的严格,然后在Android ...

  4. android string.xml里的空格字符

    在string.xml定义字符串的时候常常要用到空格, 直接用键盘敲的话不知道是几个空格,常常看错了,导致误删. 假设用 来替代空格的话,就好非常多. 另外使用%1$s,%1$d能够在一个字符串里定义 ...

  5. Android string.xml 添加特殊字符

    解决项目中在string.xml 中显示特殊符号的问题,如@号冒号等.只能考虑使用ASCII码进行显示: @号 @ :号 : 空格   以下为常见的ASCII十进制交换编码: --> <- ...

  6. Android string.xml 显示特殊符号

    项目中要在string.xml 中显示特殊符号,如@号冒号等,直接写肯定不行啦..只能考虑使用ASCII码进行显示: 省略号 …@号 @:号 :空格   以下为常见的ASCII十进制交换编码: --& ...

  7. android string.xml前后加空格的技巧

    方法1: <string name="password">密    码</string>&#160 这个就代表着空格. 方法2:用\u0020代表空 ...

  8. Android String.xml中的符号总结

    <b></b>加粗字体 <i></i> 斜体字体 <u></u> 给字体加下划线 \n 换行 \u0020表示空格 \u2026 ...

  9. android textview改变部分文字的颜色和string.xml中文字的替换(转)

    转   :http://blog.csdn.net/ljz2009y/article/details/23878669 一:TextView组件改变部分文字的颜色: TextView textView ...

  10. Android Studio 轻松整理字符串到string.xml中

    昨天了解了Alt+Enter快捷键的大用处,今天又发现了一个快捷的方法,必须记下来.转载请注明出处http://www.cnblogs.com/LT5505/p/5466630.html 1.首先代码 ...

随机推荐

  1. ColorWell - web 颜色代码取色工具,Mac 上的优秀调色板

    ColorWell 是 Mac 上的一款非常优秀的颜色取色工具,她具有历史记录.调色板同步等功能,非常适合 web 或 App 开发人员使用 下载 ► ColorWell 下载安装 ⇲ 详细介绍 美丽 ...

  2. grub 命令使用

    命令列表 ubuntu 的 iso 盘内一般有 command.lst 这个文件,里面是 grub 支持的命令 加载字体 ( 方便中文显示 ) grub> loadfont $prefix/fo ...

  3. 生产事故-记一次特殊的OOM排查

    入职多年,面对生产环境,尽管都是小心翼翼,慎之又慎,还是难免捅出篓子.轻则满头大汗,面红耳赤.重则系统停摆,损失资金.每一个生产事故的背后,都是宝贵的经验和教训,都是项目成员的血泪史.为了更好地防范和 ...

  4. 开源Apinto网关-流量策略

    背景介绍 Apinto是一款高性能.可扩展.易维护的API网关. Apinto网关基于GO语言模块化开发,5分钟极速部署,配置简单.易于维护,支持集群与动态扩容,企业级开箱即用.Apinto除了提供丰 ...

  5. Python开发遇到的一些问题

    1.SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try usin ...

  6. 一文讲透 Redis 事务 (事务模式 VS Lua 脚本)

    准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本. 先说结论: Redis 的事务模式具备如下特点: 保证隔离性: 无法保证持久性: 具备了一定的原子性,但不支持回滚: 一致性的 ...

  7. 《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战

    ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译.写文章.写代码等.ChatGPT很强大,让很多人感兴趣,也让很多人担心. 使用ChatGPT有一些 ...

  8. 面试题:JS如何最快的执行垃圾回收机制

    因为没看见答案,所以也不知道对不对. JavaScript 的垃圾回收机制是由 JavaScript 引擎自动管理的,通常情况下我们无法控制垃圾回收机制的执行时间和频率. 然而,我们可以采取一些优化策 ...

  9. 音视频八股文(3)--ffmpeg常见命令(2)

    07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 "test time ...

  10. 2021-04-04:给定一个非负数组arr,和一个正数m。 返回arr的所有子序列中累加和%m之后的最大值。

    2021-04-04:给定一个非负数组arr,和一个正数m. 返回arr的所有子序列中累加和%m之后的最大值. 福大大 答案2021-04-04: 自然智慧即可. 1.递归,累加和. 2.动态规划,累 ...