当前位置:   article > 正文

c# 读取xls文件报错,大概是:导出的excel文件格式和扩展名不匹配.................._c# 生成的excel打开时显示文件格式或文件扩展名无效

c# 生成的excel打开时显示文件格式或文件扩展名无效

用EPPlus读取转换后的xlsx时出现的这个问题,以为EPPlus包不行,换了其他包也读取不了.

手动打开xls文件发现页面弹出

"导出的excel文件格式和扩展名不匹配,文件可能已损坏或不安全。除非您信任其来源,否则请勿打开.是否仍要打开它?"

才发现是文件本身的问题

具体操作:

手动用Excel打开,出现弹窗,点击确定,将该文件另存为文件A,再用程序打开文件A,一切正常,代码大体就是这个意思,解决这个问题必须要安装微软的Office或者单独安装Excel组件

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Xml.XPath;
  7. using Microsoft.Office.Interop.Excel;
  8. using module.kefu.entities;
  9. using Utils;
  10. namespace module.insured.ManualRemittance.entity
  11. {
  12. class MicsoftExcelUtil
  13. {
  14. /*
  15. * 引用 Microsoft.Office.Interop.Excel 将xls另存为新的xls文件
  16. * 解决"导出的excel文件格式和扩展名不匹配,文件可能已损坏或不安全。除非您信任其来源,否则请勿打开.是否仍要打开它?
  17. */
  18. public static void SaveAsOtherFile(string filePath,string newFilePath)
  19. {
  20. Application app = null;
  21. Workbook workbook = null;
  22. try
  23. {
  24. app = new Application();
  25. workbook = app.Workbooks.Open(filePath);
  26. //获取当前用户使用Excel的版本号
  27. string version = app.Version;
  28. // 保存文件的格式
  29. int formatNum;
  30. if (Convert.ToDouble(version) < 12) // 97-2003
  31. {
  32. formatNum = -4143;
  33. }
  34. else
  35. {
  36. formatNum = 56; // 2007 or later
  37. }
  38. workbook.SaveAs(newFilePath, formatNum);
  39. }
  40. catch (Exception e)
  41. {
  42. LogUtils.info("xls文件另存为异常:"+e.Message);
  43. throw new Exception("xls文件另存为错误:"+e.Message);
  44. }
  45. finally
  46. {
  47. workbook.Close();
  48. app.Quit();
  49. System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
  50. System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
  51. GC.Collect();
  52. }
  53. }
  54. }
  55. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/446191
推荐阅读
相关标签
  

闽ICP备14008679号