.Net C# DocX 库:如何序列化 DocX 文档?
.Net C# DocX librairy : how to serialize a DocX document?
当使用 DocX 库时,我在服务器上生成 docx 文档然后下载它。
为此,我需要将我的文档转换为字节数组。
为此,我以前喜欢将文档保存为这样的物理文件:
// Save all changes to this document.
document.SaveAs(GENERATED_DOCX_LOCATION);
return System.IO.File.ReadAllBytes(GENERATED_DOCX_LOCATION);
但我不想那样做。是否可以序列化此对象以下载它而不进行物理保存?
我已经试过了:
private byte[] ObjectToByteArray(object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
有:
return this.ObjectToByteArray(document);
但显然,DocX 没有实现 ISerializable。
编辑:下面的代码也不起作用
byte[] byteArray = null;
using (var stream = new MemoryStream())
{
document.SaveAs(stream);
byteArray = stream.ToArray();
}
return byteArray;
试试这个,将我的 c:\temp... 路径替换为您的文档位置,这将从字节数组中为您获取和写入文件
void Main()
{
byte[] bytes = System.IO.File.ReadAllBytes(@"C:\temp\test.csv");
using (var bw = new BinaryWriter(File.Open(@"C:\temp\test2.csv", FileMode.OpenOrCreate)))
{
bw.Write(bytes);
bw.Flush();
}
}
无法通过原始 DocX 库来完成。
很遗憾,因为这个库使用 MemoryStream 来操作数据。
为了解决我的问题,我只是添加了一个新的 public readonly 属性 来公开私有 MemoryStream 变量,然后我使用了这个简单的代码:
在 DocX 项目中添加的代码:
public MemoryStream DocumentMemoryStream { get { return this.memoryStream; } }
我的主要功能中的代码:
return document.DocumentMemoryStream.ToArray();
当使用 DocX 库时,我在服务器上生成 docx 文档然后下载它。
为此,我需要将我的文档转换为字节数组。
为此,我以前喜欢将文档保存为这样的物理文件:
// Save all changes to this document.
document.SaveAs(GENERATED_DOCX_LOCATION);
return System.IO.File.ReadAllBytes(GENERATED_DOCX_LOCATION);
但我不想那样做。是否可以序列化此对象以下载它而不进行物理保存?
我已经试过了:
private byte[] ObjectToByteArray(object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
有:
return this.ObjectToByteArray(document);
但显然,DocX 没有实现 ISerializable。
编辑:下面的代码也不起作用
byte[] byteArray = null;
using (var stream = new MemoryStream())
{
document.SaveAs(stream);
byteArray = stream.ToArray();
}
return byteArray;
试试这个,将我的 c:\temp... 路径替换为您的文档位置,这将从字节数组中为您获取和写入文件
void Main()
{
byte[] bytes = System.IO.File.ReadAllBytes(@"C:\temp\test.csv");
using (var bw = new BinaryWriter(File.Open(@"C:\temp\test2.csv", FileMode.OpenOrCreate)))
{
bw.Write(bytes);
bw.Flush();
}
}
无法通过原始 DocX 库来完成。
很遗憾,因为这个库使用 MemoryStream 来操作数据。
为了解决我的问题,我只是添加了一个新的 public readonly 属性 来公开私有 MemoryStream 变量,然后我使用了这个简单的代码:
在 DocX 项目中添加的代码:
public MemoryStream DocumentMemoryStream { get { return this.memoryStream; } }
我的主要功能中的代码:
return document.DocumentMemoryStream.ToArray();