Python xlsxwriter修复记录:来自/xl/sharedStrings.xml部分的字符串属性(字符串)

时间:2017-04-04 05:59:19

标签: python-3.x xlsxwriter

我正在使用xlsxwriter模块创建并写入excel文件。但是当我打开excel文件时,我会看到这个弹出窗口:

We found a problem with some content in 'excel_sheet.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes.如果我点击是,则显示Repaired Records: String properties from /xl/sharedStrings.xml part (Strings),然后我就会看到内容。

我发现这是因为我使用write_rich_string编写的单元格。

my_work_sheet.write_rich_string(row_no, col_no,format_1, "Some text in format 1", format_2, "Text in format 2", format_1, "Again in format 1")

如果我使用write_string写它,则不会发生这种情况。 format_1format_2具有字体名称,颜色,大小和垂直对齐设置。

有人能说出这里出了什么问题吗?

2 个答案:

答案 0 :(得分:2)

我试图重新创建(感谢@jmcnamara)这个问题,我可以找出它出错的地方。

write_rich_string的命令中,有时它试图格式化空字符串。

my_work_sheet.write_rich_string(row_no, col_no,format_1, string_1, format_2, string_2, format_1, string_3)

我发现在某个时间点string_1string_2string_3之间的价值变为''。现在我只在确保它们不是write_rich_string后才使用''

答案 1 :(得分:0)

一般来说,"我们发现某些内容存在问题"来自Excel的错误/警告意味着XML元素或属性在xlsx文件的某个组件文件中格式错误。同样,一般来说,这意味着XlsxWriter中存在错误,或者它无法以某种方式清理用户输入。

但是,在这种特殊情况下,没有足够的信息来确定问题所在。我拿了你的代码片段并将其转换为测试程序,它按预期工作。

import xlsxwriter

workbook = xlsxwriter.Workbook('rich_strings.xlsx')
my_work_sheet = workbook.add_worksheet()

my_work_sheet.set_column('A:A', 50)

format_1 = workbook.add_format({'color': 'red'})
format_2 = workbook.add_format({'color': 'blue'})

my_work_sheet.write_rich_string(0, 0, 
                                format_1, "Some text in format 1 ", 
                                format_2, "Text in format 2 ", 
                                format_1, "Again in format 1")

workbook.close()

输出:

example image

因此,您需要创建一个如上所述的小型自包含程序,并将a bug report提交给XlsxWriter project