C# EPPlus 合并 Excel 文件

2023-12-21

我想在 C# 中使用 EPPlus 合并多个 Excel 文件。

我做了以下事情:

using (MemoryStream protocolStream = new MemoryStream())
{
    ExcelPackage pck = new ExcelPackage();
    HashSet<string> wsNames = new HashSet<string>();

    foreach (var file in files)
    {
        ExcelPackage copyPck = new ExcelPackage(new FileInfo(file));
        foreach (var ws in copyPck.Workbook.Worksheets)
        {
            string name = ws.Name;
            int i = 1;
            while (!wsNames.Add(ws.Name))
                name = ws.Name + i++;
            ws.Name = name;
            var copiedws = pck.Workbook.Worksheets.Add(name);
            copiedws.WorksheetXml.LoadXml(ws.WorksheetXml.DocumentElement.OuterXml);
        }
    }
    pck.SaveAs(protocolStream);
    protocolStream.Position = 0;
    using (FileStream fs = new FileStream(resultFile, FileMode.Create))
        protocolStream.CopyTo(fs);
}

但我收到以下错误pck.SaveAs(protocolStream):

System.ArgumentOutOfRangeException

在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument 参数,ExceptionResource 资源)中 System.Collections.Generic.List1.get_Item(Int32 index) in OfficeOpenXml.ExcelStyleCollection1.get_Item(Int32位置ID)

我也尝试过工作表.副本方法,但我失去了它的样式。


下面是一个通过复制源 Excel 文件中的所有工作表将多个文件合并为一个的示例。

var files = new string[] { @"P:\second.xlsx", @"P:\second.xlsx" };

        var resultFile = @"P:\result.xlsx";

        ExcelPackage masterPackage = new ExcelPackage(new FileInfo(@"P:\first.xlsx"));
        foreach (var file in files)
        {
            ExcelPackage pckg = new ExcelPackage(new FileInfo(file));

            foreach (var sheet in pckg.Workbook.Worksheets)
            {
                //check name of worksheet, in case that worksheet with same name already exist exception will be thrown by EPPlus

                string workSheetName = sheet.Name;
                foreach (var masterSheet in masterPackage.Workbook.Worksheets)
                {
                    if (sheet.Name == masterSheet.Name)
                    {
                        workSheetName = string.Format("{0}_{1}", workSheetName, DateTime.Now.ToString("yyyyMMddhhssmmm"));
                    }
                }

                //add new sheet
                masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);
            }
        }

        masterPackage.SaveAs(new FileInfo(resultFile));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# EPPlus 合并 Excel 文件 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • 修剪工作簿中的所有单元格(VBA)

    我尝试向一直在开发的 Excel 加载项添加功能 该功能会修剪已用单元格末尾的前导空格 甚至可能解析文本 我需要这样做的原因只是为了将其变成超链接我已经在工作了 但是那部分很好 这是我到目前为止所尝试的 我已经修剪了active works
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 父子进程隔离和子进程列表

    请阅读以下模板 PID Status LPID 10 Closed 25 11 Open 25 31 Open 31 25 Closed 25 54 Open 31 17 Open 17 20 Closed 31 88 closed 77
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法破解 Excel VBA 项目的密码?

    我被要求更新一些 Excel 2003 宏 但 VBA 项目受密码保护 而且似乎缺少文档 没有人知道密码 有没有办法删除或破解 VBA 项目上的密码 你可以直接尝试这个VBA不需要十六进制编辑的方法 它适用于任何文件 xls xlsm xl

随机推荐

  • Java - 适合搜索间隔的数据结构[重复]

    这个问题在这里已经有答案了 可能的重复 Java 是否存在开放式区间实现 https stackoverflow com questions 724575 does an open ended interval implementation
  • 使用 pybind11 在类方法中调用嵌入函数

    我正在开发一个使用 pybind11 嵌入 python 的 C 应用程序 在尝试从类方法调用嵌入函数时遇到了一些问题 首先是我的绑定 ifdef DEBUG undef DEBUG include
  • 多个剪辑路径

    我正在尝试制作一个理想的由多个 div 组成的网站布局 我希望每个 div 都有一个倾斜的底部 进入下面的一个 这是迄今为止的模型 charset utf 8 CSS Document margin 0 font size 10px red
  • Python AIOHTTP.web 服务器多处理负载均衡器?

    我目前正在使用 aiohttp 模块开发一个网络应用程序 我在用着 aiohttp web asyncio uvloop aiohttp session aiohttp security aiomysql and aioredis 我已经对
  • PHP 数组转换为 javascript 数组

    我对如何从 PHP 将数组实现到 JS 有点困惑 我这样做是为了测试 最终我将使用长轮询或 websockets 如果它们得到高度支持 但这就是我所拥有的 get mysql query SELECT x y sid FROM player
  • $.get 不是函数

    我想通过 JS 获取一些数据 因此我 开发 了一个小脚本 实际上我已经很长时间没有使用 JS JQuery 了 现在我面临着一个非常基本的问题 我尝试更换 with jQuery但我得到了同样的错误 HTML script gt gt sc
  • 如何在反向外键上选择相关? [复制]

    这个问题在这里已经有答案了 可能的重复 Django 中的左外反向 select lated https stackoverflow com questions 2975558 a left outer reverse select rel
  • 托管服务引擎 (MSE) 路线图

    有谁能够指出这个项目 托管服务引擎 http servicesengine codeplex com 已被放弃 我需要决定是否将此作为我的企业服务虚拟化计划的一部分 目前 我看到 Microsoft 提供了许多竞争解决方案 例如 AppFa
  • 统一镜像 Oculus Rift 控制器位置以进行双边移动

    目前 我正在尝试编写一个脚本 为只有 1 个功能臂的用户将一个控制器的运动镜像到另一个控制器上 如何将一个控制器的位置镜像到另一个控制器上 以便手臂进行双边运动 镜像 y 轴和 z 轴很容易 因为它们一起移动并且旋转很容易镜像 我无法镜像
  • 错误:在“UIView *”类型的对象上找不到属性“frame”

    我正在调试我的代码并尝试使用以下方法计算视图的大小 p view frame size height 但我收到此错误 错误 在 UIView 类型的对象上找不到属性 frame 错误 1 解析表达式时出错 你们中的任何人都知道为什么或者如何
  • Python strip() 多个字符?

    我想从字符串中删除任何括号 为什么这不能正常工作 gt gt gt name Barack of Washington gt gt gt name name strip lt gt gt gt gt print name Barack of
  • PhoneGap 1.5 ChildBrowser 无法显示本地文件

    我正在为 iOS 构建 PhoneGap 1 5 Cordova 应用程序 并希望使用 ChildBrowser 插件来显示 PDF 文件 我已经能够对其进行设置 并且在查看外部 PDF 文件 http https 时效果非常好 该应用程序
  • WebService 调用中序列化字符串时出错

    今天早上 我在返回 Web 服务调用结果的文本字符串时遇到了问题 我收到的错误如下 Exception Text System ServiceModel CommunicationException Error in deserializi
  • 使用 fwrite() 在 C 中逐字节写入文件

    我正在尝试逐字节读取文件并将其写入另一个文件 我有这个代码 if file to write fopen file to read ab NULL for i 0 i
  • .NET MAUI 中的 Shell 导航到带有底部选项卡的页面

    在登录流程中 登录页面通常没有构成应用程序主要流程的底部选项卡 AppShell xaml
  • 如何用 HTML 和 CSS 模拟 \hfill?

    考虑一个像这样的简单网页 p a b c p 我想要a b c格式就像我写的一样a hfill b hfill c在 TeX 中 这是 a 在左边 b 在中间 c 在右边 都在同一条线上 我怎样才能做到这一点 您将如何处理这在很大程度上取决
  • mysql 具有所有值

    这与我的最后一个问题有关mysql 使用 AND OR 和 NOT 进行查询 https stackoverflow com questions 4153137 mysql query with and or and not 我没有编辑问题
  • Discord.py 欢迎机器人 on_member_join 事件没有被调用

    我最近对使用不和谐机器人很感兴趣 从我看来 这段代码应该可以工作 但事实并非如此 我只是在玩弄 API 因为它很有趣 所以我对此还很陌生 我只是希望机器人在某人加入时欢迎他们 import discord client discord Cl
  • 社交网络平台的架构

    我很好奇像Ning SocialGo这样的平台是如何设计的 不是特别针对社交网络平台 而是一般允许用户构建类似网站的平台 我的理解是 当用户注册时 他们会获得一个子域 他们的成员可以通过该子域注册并访问该特定用户生成的网站 我想有一个为生成
  • C# EPPlus 合并 Excel 文件

    我想在 C 中使用 EPPlus 合并多个 Excel 文件 我做了以下事情 using MemoryStream protocolStream new MemoryStream ExcelPackage pck new ExcelPack