C# - 使用互操作命名空间删除 Excel 行

本文关键字:删除 Excel 命名空间 互操作 | 更新日期: 2023-09-27 18:35:36

我正在寻找一种 C# 方法来删除工作表中的(空)Excel 行,而无需使用 Microsoft.Office.Interop.Excel 命名空间。

找到许多使用互操作命名空间的示例,例如 C# 和 excel 删除行。但是有没有办法在没有第三方工具的情况下做到这一点 - 只有使用 .NET?

感谢您的帮助!

C# - 使用互操作命名空间删除 Excel 行

仅依赖于标准 .NET Framework 命名空间的 Excel 文件的选项受到限制。我想到了两种可能性。第一个是"最简单的",但仅适用于您主要感兴趣的是将内容用作数据库的情况。第二个允许您使用 Excel 工作簿做几乎"任何事情",但学习曲线会很陡峭。

这两种方法都适合在服务器环境中工作(与需要存在 Excel 应用程序的方法不同),并且不需要任何许可证。

  1. 可以使用 OLE DB 连接(ACE OLE DB 提供程序)与 Excel 工作簿的内容进行通信。它允许连接到单个工作表以及命名范围。支持基本的 SQL 功能。
  2. Excel 2007 及更高版本的文件格式为 Office Open XML (OOXML)。这些文件是"zip包",其中包含构成工作簿的文件(大多数为xml)。因此,任何可以使用 Zip 包和 XML 的标准工具都可用于打开 Excel 工作簿、编辑内容,然后关闭工作簿备份。在.NET Framework中,这些将是System.IO.Packaging(在WindowsBase.dll中,通常需要专门引用)和System.XML命名空间。

    文件格式的文档是 ECMA-376 标准 (http://www.ecma-international.org/publications/standards/Ecma-376.htm)。openxmldeveloper.org 是一个有用的在线资源。

    请注意,Microsoft还提供 Open XML SDK,这是一个免费下载,可以与您的解决方案一起免许可证分发。Open XML SDK 减少了"学习曲线",因为它减少了您需要的有关 OOXML 文件格式的知识量。为了完整起见,我提到这一点,因为我知道尝试直接使用文件格式是多么具有挑战性。此外,由于 DLL 可自由分发,并且可以作为解决方案的一部分进行复制,因此它可能满足您的要求。

这篇 stackoverflow 文章可能会有所帮助 - 它讨论了一些无需安装 Office 即可操作 excel 的库。这个问题与 VB.NET 有关,但我相信所讨论的选项也适用于 C#......

如何在没有安装办公室的情况下处理 vb.net 中的excel文件