将Packagepart复制到文件或内存
问题描述:
我想提取xlsx文件以获取sheet1.xml文件。现在我正在为Package和PackagePart而努力。我觉得最明显的方法是阅读特定的文件,复制内容到XmlDocument
这是我有这么远:将Packagepart复制到文件或内存
XmlDocument doc = new XmlDocument();
using (Package package = ZipPackage.Open(xlsFile, FileMode.Open, FileAccess.Read))
{
foreach (PackagePart part in package.GetParts())
{
var target = Path.GetFullPath(Path.Combine(tempFolderPath, part.Uri.OriginalString.TrimStart('/')));
var targetDir = target.Remove(target.LastIndexOf('\\'));
if (!Directory.Exists(targetDir))
Directory.CreateDirectory(targetDir);
using (Stream source = part.GetStream(FileMode.Open, FileAccess.Read))
{
FileStream targetFile = File.OpenWrite(target);
byte[] bytes = new byte[source.Length];
source.Read(bytes, 0, (int)source.Length);
source.Close();
//source.CopyTo(targetFile);
//doc.Load(source.Write());
//targetFile.Close();
}
}
}
我使用.NET 3.5,所以我不能使用Stream source.CopyTo
方法。 我想将Sheet1.xml的内容复制到XmlDocument类的文档中。
谢谢! 保罗
答
您可以使用XmlDocument.Load
overload which takes a Stream
:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read));
一旦加载,然后你可以使用XmlDocument.Save
:
xmlDoc.Save(target);
大,这么简单!我也犯了一个愚蠢的错误,但现在没有意思...... :) 谢谢! – 2013-05-07 09:57:32