web2py的grid的csv导出存在2个问题:
1、excel直接打开中文是乱码,这是因为相关csv文件没有BOM_UTF8声明;
2、导出文件的表头是db中的数据表的英文字段名,不是很友好,要是导出的表头是label设置的中文名字或者language中的翻译名才OK
优化方法:
打开web2py自带gluon文件下的objects.py,找到export_to_csv_file 函数,里面有段:
if write_colnames: writer.writerow(unquote_colnames(colnames))
改为:
import codecs
ofile.write(codecs.BOM_UTF8)
if write_colnames:
new_colnames= [name.replace('"','') for name in colnames ]
labels = []
for col in new_colnames:
(t, f) = col.split('.')
labels.append(str(self.db[t][f].label))
writer.writerow(unquote_colnames(labels))