我試圖創建一個2007+ Excel文檔(.xlsx),除了使用.net 4.0內置類。 所以我不能使用任何第三方庫。[Content_Types] .xml <Override>元素缺失
實際上它的大部分完成,我現在面對的唯一問題是,我創建的包似乎無法在創建[CONTENT_TYPES] .XML文件的,我的意思是它缺乏所有的<替代>元素,只有<默認>元素被創建。
我敢肯定,問題出在哪裏創建包之間的關係的觀點,但我只是不知道如何使它工作,文檔和示例上包裝和ZipPackage類驚人地稀少。
也許我錯過了另一個步驟......是否有人有任何線索?請
這是一個類似代碼excactly產生相同的問題
public void CreatePackage()
{
string Dir = @"F:\Proyectos\Excel_StackOverflow\WindowsFormsApplication1\WindowsFormsApplication1\Resources";
Uri File1_abs = new Uri(String.Format(@"{0}\1.xml", Dir), UriKind.Absolute);
Uri File1_rel = new Uri(@"/OddContent/File1.xml", UriKind.Relative);
using (ZipPackage exPkg = (ZipPackage)Package.Open(String.Format(@"{0}\Temp.zip", Dir), FileMode.Create))
{
ZipPackagePart File1Part = (ZipPackagePart)exPkg.CreatePart(File1_rel, System.Net.Mime.MediaTypeNames.Text.Xml);
using (FileStream fs1 = new FileStream(File1_abs.LocalPath, FileMode.Open, FileAccess.Read))
{
Form1.CopyStream(fs1, File1Part.GetStream());
}
exPkg.CreateRelationship(File1_rel, TargetMode.Internal, "SomeType");
exPkg.Flush();
exPkg.Close();
}
}
private static void CopyStream(Stream source, Stream target)
{
const int bufSize = 0x1000;
byte[] buf = new byte[bufSize];
int bytesRead = 0;
while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
target.Write(buf, 0, bytesRead);
}
和[CONTENT_TYPES] .xml文件它生成對於給定的代碼是:
<?xml version="1.0" encoding="UTF-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="text/xml" Extension="xml"/>
</Types>
但實際上I」 m期待類似這樣的[Content_Types] .xml文件內容:
<?xml version="1.0" encoding="UTF-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="text/xml" Extension="xml"/>
<Override PartName="...................."/>
</Types>
感謝羅馬,你的回答非常好,救了我的一天,太棒了! – Overlord 2013-03-13 05:20:40