本文将实现将excel中的文本转为unicode功能,并保存在.h中。
执行前:
执行后:
import xlrd
import os
import binascii
import re
# coding=utf-8
def strs(row):
values = ""
for i in range(len(row)):
if i == len(row) - 1:
values = values + str(row[i])
else:
values = values + str(row[i])
return values
#打开excel文件
data=xlrd.open_workbook('language.xlsx')
#获取第一张工作表(通过索引的方式)
table=data.sheets()[0]
def checkFileExit(fileName):
if os.path.exists(fileName): # 判断文件是否存在
os.remove(fileName) #存在,则删除文件
# 文件读写方式是追加
sqlfile1 = open(fileName, "a", encoding='utf-16')
return sqlfile1
file1 = "language_c.h" #中文
file2 = "language_e.h" #英
nrows = table.nrows #获取该sheet中的有效行数
ncols = table.ncols #获取列表的有效列数
print (nrows)
print (ncols)
CurNcol = 0
CurNrow = 0
for CurNcol in range(1,ncols): # 每次遍历一列
suffix = table.cell_value(1,CurNcol)
# print(suffix)
if CurNcol == 1:
sqlfile = checkFileExit(file1)
elif CurNcol == 2:
sqlfile = checkFileExit(file2)
# 逐行遍历
for CurNrow in range(2,nrows):
#返回单元格中的数据
txt = table.cell_value(CurNrow,CurNcol)
values = strs(txt) # 调用函数,将行数据拼接成字符串
s_to_unicode = values.encode("utf-16").decode("utf-16")
sqlfile.writelines("//" + values + "\r\n")
#一个字符串的开始,线协商索引
sqlfile.writelines ("char " + table.cell_value(CurNrow,0) + suffix + '[] { ')
for character in txt:
byte = ord(character)
byte_high = hex(byte >> 8)
byte_low = hex(byte & 0x00FF)
sqlfile.writelines (byte_high +', ' + byte_low +', ')
sqlfile.writelines("0x00, 0x0A },\r\n") # 将字符串写入新文件
sqlfile.close() # 关闭写入的文件
如果xlsx格式文件时报格式不支持错误,回退下版本
pip uninstall xlrd
pip install xlrd==1.2.0