首页 > 其他分享 >关于NPOI word 异常解决NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“Fail to save: an erro

关于NPOI word 异常解决NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“Fail to save: an erro

时间:2023-12-25 21:04:16浏览次数:33  
标签:word FileStream NPOI item Value FileMode new save fileStream


NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“Fail to save: an error occurs while saving the package : Must support writing

源代码

string fileContent = File.ReadAllText(filePath, Encoding.Default);

            Dictionary<string, string> dic = ConvertToKeyValuePairs(fileContent);

            File.Copy(srcPath, dstPath, true);

            using (FileStream fileStream = new FileStream(dstPath, FileMode.Open, FileAccess.ReadWrite))
            {
                 doc = new XWPFDocument(fileStream);

                foreach (var item in dic)
                {
                    if (String.IsNullOrEmpty(item.Value))
                    {
                        continue;
                    }

                    TextReplace($"{{{item.Key}}}", item.Value);
                }
                doc.Write(fileStream);
            }

不值得为啥不支持写
NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“Fail to save: an error occurs while saving the package : Must support writing
参数名: baseOutputStream”

修改2

Dictionary<string, string> dic = ConvertToKeyValuePairs(fileContent);

            File.Copy(srcPath, dstPath, true);

            using (FileStream fileStream = new FileStream(srcPath, FileMode.Open, FileAccess.ReadWrite))
            {
                 doc = new XWPFDocument(fileStream);

                foreach (var item in dic)
                {
                    if (String.IsNullOrEmpty(item.Value))
                    {
                        continue;
                    }

                    TextReplace($"{{{item.Key}}}", item.Value);
                }
                
            }

            using (FileStream fileStreamWrite = new FileStream(dstPath, FileMode.Open, FileAccess.Write))
            {
                doc.Write(fileStreamWrite);
            }

还是不行,输出乱码,感觉是FileMode.Open问题。

终版正常运行,直接创建了一个新的流。

string fileContent = File.ReadAllText(filePath, Encoding.Default);

            Dictionary<string, string> dic = ConvertToKeyValuePairs(fileContent);

            using (FileStream fileStream = new FileStream(srcPath, FileMode.Open, FileAccess.ReadWrite))
            {
                 doc = new XWPFDocument(fileStream);

                foreach (var item in dic)
                {
                    if (String.IsNullOrEmpty(item.Value))
                    {
                        continue;
                    }

                    TextReplace($"{{{item.Key}}}", item.Value);
                }
                
            }

            using (FileStream fileStreamWrite = new FileStream(dstPath, FileMode.Create, FileAccess.Write))
            {
                doc.Write(fileStreamWrite);
            }


标签:word,FileStream,NPOI,item,Value,FileMode,new,save,fileStream
From: https://blog.51cto.com/u_14910409/8972146

相关文章

  • office2019专业增强版word功能讲解及安装包收集整理
    简介Office2019专业增强版是微软最新推出的办公软件,相信大家对这款软件并不陌生。这款软件提供了许多实用的功能,例如多显示器优化功能。当我们使用两个显示器时,很难保证它们的分辨率完全相同,因此在不同显示器上显示文档时可能会出现差异。使用多显示器优化功能可以有效地避免在不同......
  • Cost Calculator Builder PRO v3.1.46 已注册 – WordPress 插件
    成本计算器生成器PROv3.1.46:WordPress插件全解析一、插件概述"成本计算器生成器PROv3.1.46"是一款强大的WordPress插件,专为需要创建报价、价格和项目估算表的用户设计。这款插件集成了众多高级功能,可帮助用户高效地管理他们的成本和价格,从而提供准确的报价估算。二、条......
  • [转]Spring Security 中默认使用的 BCryptPasswordEncoder 密码加盐
    原文地址:SpringSecurityBCryptPasswordEncoder密码加盐_bcryptpasswordencoder加盐-CSDN博客引入spring-boot-starter-security的Jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security......
  • Java操作Word修订功能:启用、接受、拒绝、获取修订
    Word的修订功能是一种在文档中进行编辑和审阅的功能。它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改。修订功能通常用于团队合作、专业编辑和文件审查等场景。本文将从以下几个方面介绍如何使用免费工具FreeSpire.DocforJava在Java程序中操作W......
  • AIKit v4.11.0 – WordPress AI 自动编写器、聊天机器人、写作助手和内容重定向器 / O
    AIKitv4.11.0:WordPress的AI革命一、引言AIKitv4.11.0是一款为WordPress用户精心设计的强大插件,该插件集成了OpenAI的GPT-3技术,为用户提供了前所未有的AI写作和聊天机器人功能。此版本的推出,将WordPress的功能扩展到了全新的领域,利用人工智能技术,让网站内容创作变得更加简单......
  • words这些数组反推aes/des等iv/key的字符串
    我们经常会遇到一些js里面先见到words等数组的,但是不知道它原始的字符串是什么的情况,这个时候我们可以使用对称的stringify进行还原,比如CryptoJS.enc.Utf8.parse('key或者iv值')的结果,我们可以通过CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Utf8.parse('key或者iv值'))进行还原......
  • 搭建Hadoop开发环境并运行WordCount测试程序
    步骤1:修改主机名和IP地址1.1修改主机名sudohostnamectlset-hostnameyour_hostname1.2修改IP地址和绑定主机名与IP,根据你的网络配置进行设置。步骤2:关闭防火墙并关闭防火墙开机启动sudosystemctlstopfirewalldsudosystemctldisablefirewalld步骤3:安装JDK并配置环境......
  • 使用office打开word文档时候提示错误:0x426-0x0的解决方案
    在使用office打开word文档时候提示错误:0x426-0x0。如下图:昨天还用的好好的,怎么今天就不行了?为什么呢?这个错误导致office无法启动通常是由于office软件所依赖的服务无法正常运行导致。为什么会无法启动呢?突然想到,凯哥昨天手贱,昨天电脑重启时候,提示有需要优化的启动项,于是在wind+R,运......
  • 解决Authentication plugin ‘caching_sha2_password‘ cannot be loaded问题
    感谢,参考文章:https://blog.csdn.net/qq_46059247/article/details/125333706报错原因用图形化用户界面连接的MySQL8.0时,报错信息:Authenticationplugin‘caching_sha2_password’cannotbeloadedMySQL8.0之前的版本中加密规则是mysql_native_password,而在MySQL8.0之后,加......
  • Linux安装pinpoint监控,保姆级安装攻略,没有之一
    Linux安装pinpoint监控,保姆级安装攻略,没有之一pinpoint介绍Pinpoint是一个开源的APM(ApplicationPerformanceManagement/应用性能管理)工具,用于基于java的大规模分布式系统,基于GoogleDapper论文。架构组成Pinpoint主要由四部分组成:Pinpoint-Collector:数据收集模块,接收Agent发......