最近项目开发涉及到了操作Word模板,先前用Office的动态库编码,完成后,部署客户环境时候,发现出现各种问题,需要安装office,然后报出各种
注册表问题,麻烦的太太,于是改用另一种方法,引进Aspose.Words.dll后,就直接操作word模板,画表格,非常方便,于是把方法记录下来,分享给大家,
希望大家能在以后的工作中避开不必要的选择时间浪费,共进共勉:
/// <summary>
/// AsPose.Word's Export/// </summary>
/// <returns></returns>
public static string AsPoseExportData(ReportType roportType, Dictionary<string, string> param)
{
//Report Template'work Path
string path = Path.Combine(SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Akmii.BMS.China.Workflow\ReportTemplate"), roportType.ToString() + ".docx");
Aspose.Words.Document doc = new Aspose.Words.Document(path);
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToCell(0, 0, 1, 0);
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Bottom;
builder.Write(param["ReportName"].ToString());
builder.MoveToDocumentEnd();---------------------------------------------------------- 注意:换行,重新开始
//Insert Empty Rows
builder.StartTable();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
for (int j = 0; j < 1; j++)
{
builder.InsertCell();
builder.EndRow();
}
builder.EndTable();
builder.MoveToDocumentEnd();
//Insert Table Head
builder.StartTable();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
for (int j = 0; j < 2; j++)
{
if (j == 0)
{
builder.InsertCell();
builder.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.Write("EventNo:");
builder.InsertCell();
builder.Bold = false;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.Write(param["EventNo"].ToString());
builder.InsertCell();
builder.Write("");
builder.InsertCell();
builder.Write("");
}
else if (j == 1)
{
builder.InsertCell();
builder.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.Write("Venue:");
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.Bold = false;
builder.Write(param["Venue"].ToString());
builder.InsertCell();
builder.Bold = true;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
builder.Write("Meeting Date:");
builder.InsertCell();
builder.Bold = false;
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.Write(Convert.ToDateTime(param["ActivityDate"]).ToString("yyyy-MM-dd"));
}
builder.EndRow();
}
builder.EndTable();
//Insert Other table
builder.MoveToDocumentEnd();
//Insert Empty Rows
builder.StartTable();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
for (int j = 0; j < 1; j++)
{
builder.InsertCell();
builder.EndRow();
}
builder.EndTable();
builder.MoveToDocumentEnd();
//Data Table Start
builder.StartTable();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Inset;
builder.Bold = true;
DataTable dtAttendee = GetDataInfo(param["EventNo"].ToString());
int dtAttendeeCnt = dtAttendee.Rows.Count;
int columncnt = 5;
//Insert Table Data
for (int i = 0; i < dtAttendeeCnt; i++)
{
if (i == 0)
{
//Create Table Head Data
for (int j = 0; j < columncnt; j++)
{
builder.Bold = true;
if (j == 0)
{
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Write("Name");
}
else if (j == 1)
{
builder.InsertCell();
builder.Write("Title");
}
else if (j == 2)
{
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Write("Hospitals&Speciaty/Organ");
}
else if (j == 3)
{
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Write("Signature");
}
else if (j == 4)
{
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Write("Remarks");
}
}
}
else
{
for (int j = 0; j < columncnt; j++)
{
builder.InsertCell();
if (j == 2)
{
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
}
else
{
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
}
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.Bold = false;
builder.Font.Size = 10;
builder.Write(dtAttendee.Rows[i][j].ToString());
}
}
builder.EndRow();
}
builder.EndTable();
//Save output document
string filename = Path.Combine(SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Akmii.BMS.China.Workflow\ReportTemplate"), "ak_ABMeetingAttendee_Result.docx");
doc.Save(filename);
return filename;
}
}
只截取了方法的片段,如有好的建议可以留言讨论,谢谢!