[问题记录] C# 使用NPOI操作Excel模版写入数据 - 生成文件打开时提示 "发现 XXX.xlsx 中的部分内容有问题..."

发布时间 2023-12-22 15:29:23作者: WikiChen

解决方案:

1.先确保原来的模版文件打开是正常的,没有提示要恢复

2.用Office打开这个模版文件,另存为一个文件。用这个文件来作为模版使用。

 

问题描述:

使用C# NPOI 操作Excel模版 (模版用office打开是正常的),写入数据 , 导出的文件打开时提示是否尝试恢复 ,点击 “是” 后 ,发现Excel内的样式不见了。

在网上找了下关于这方面的问题,尝试之后(NPOI降版本,代码修改ToArray()),并不能解决问题。

 

 后面翻到关于Excel的有XML错误的问题 (把文件改成.zip,用解压缩的方式,可以看到xml文件,然后修复有节点没有配对的方法)。

当然,写代码肯定不会这样干,不过这给了我一个提示,那就是文件本身有问题,而不是代码问题。

补充一下,WPS打开是正常的,用微软的Office才会提示问题。当然,这个要考虑具体环境,刚好这边都是用微软Office的,所以还是得解决文件问题。

换个角度一想,既然使用这个文件模版生成的文件有问题,那把这个文件模版换掉就好了吧?那怎么换呢?

我想了下,既然每次都要生成的文件都提示要恢复,如果我把文件模版修复正常,那生成的文件应该都会正常吧?

所以,方向就变成修复文件模版了,我用最简单的方式,打开原来的文件模版,另存为一个新的文件,然后用这个新的文件作为模版,再次使用代码运行,生成的文件都没有问题了。

后面同事告诉我,原来这是WPS做的模版,应该是因为这个,搞得NPOI操作文件后产生问题吧。