我正在处理文档,尝试通过网页创建docx,基本上我说我想要一个表,一个段落它应该附加到我的文档,在背景我有一个功能处理这个东西这个方式:
public void CreateDoc(params object[] document)
{
var stream = new MemoryStream();
using (WordprocessingDocument doc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document, true))
{
MainDocumentPart mainPart = doc.AddMainDocumentPart();
new Document(new Body()).Save(mainPart);
Body body = mainPart.Document.Body;
foreach (var docSections in document)
{
body.Append(new Paragraph(new ParagraphProperties(),
new Run((Run)docSections)));
}
}
stream.Seek(0, SeekOrigin.Begin);
Directory.CreateDirectory(HostingEnvironment.MapPath(DOCUMENTSLOCATION));
System.IO.File.WriteAllBytes(HostingEnvironment.MapPath("~/Files/test5.docx"), stream.ToArray());
}
注意在CreateDoc中收到的参数,它可以在对象内部接收无限数量的参数,这就是我想要的,因为我不知道我的文档将有多少部分(表格,段落,图像)等。) -
我的问题是我需要传递更多与文件构造无直接关系的参数,例如:文件名。我的想法是将它作为CreateDoc函数中的第二个参数传递,但我如何从另一侧传递它?
任何帮助?
答案 0 :(得分:1)
如果您已经定义了特定参数,则始终可以将其传递给函数。例如,如果您确定在调用此函数时始终需要filename
作为参数,则可以修改函数参数:
public void CreateDoc(string filename, params object[] document)
{
...
}
然后你可以这样称呼它:
CreateDoc("filename.docx", <param1>, <param2>);
答案 1 :(得分:0)
您可以使用your own Structure
代替Object
传递数据
与Data Type
和Data Content
检查参数的DataType
然后管理