如何使用 C# 解压缩 docx 文件?
6 回答
新的 Office 文件扩展名(docx、potx、xlsx 等)在上传到 Web 服务器然后下载时会变成 zip 文件。
这些文件格式现在使用 Open XML 文件格式系统,因此它们与来自 Google、Open Office 等的其他办公程序更加兼容。本质上,它们是充满 XML 文件的 zip 文件,当使用适当的应用程序打开这些文件时,它们会变成友好的 Word 文档。
我从这里偷了这个充满耻辱的东西,在那里你可以找到完整的信息。
我希望这个答案能帮助你和所有在不知道答案的情况下取笑你并对你的问题投反对票的无知的人。
如果您指的是docx
文件,它们基本上只是zip
使用特定约定创建的文件。
查看打包API。
这是您正在寻找的完整代码。我已将此类用于 docx zip 和 unzip 操作。
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Deployment.Compression;
using Microsoft.Deployment.Compression.Zip;
namespace <YourPackage>.Libs
{
public class ZipFile
{
private string _zipfilepath;
public ZipFile(string zipfilepath)
{
_zipfilepath = zipfilepath;
}
public void Compress(string filePath,bool deleteSourceFolder)
{
var filePaths = new List<string>();
if (Directory.Exists(filePath))
{
filePaths.AddRange(Directory.GetFileSystemEntries(filePath).ToList());
}
if (filePaths.Count > 0)
{
var zip = new ZipInfo(_zipfilepath);
zip.Pack(filePath, true, CompressionLevel.None, null);
}
if(deleteSourceFolder)
Directory.Delete(filePath,deleteSourceFolder);
}
public void Uncompress(string destinationPath)
{
var zip = new ZipInfo(_zipfilepath);
zip.Unpack(destinationPath);
}
}
}
设置对 System.IO.Compression 和 System.IO.Compression.FileSystem 的引用。然后是这样的:
using System.IO.Compression;
string zipPath = @"c:\tmp\Test.docx";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
archive.ExtractToDirectory(zipPath + ".unzipped");
}
看看这里:https ://msdn.microsoft.com/EN-US/library/hh485709(v=VS.110,d= hv.2).aspx(ZipFileExtensions.ExtractToDirectory 方法)
您可以尝试使用System.IO.Packaging.ZipPackage。
安装 Open XML SDK http://www.microsoft.com/en-us/download/details.aspx?id=5124并使用它来处理 Docx 文件中的 XML。