使用aspose.word 第三方的插件实现导出word
使用aspose.word 第三方的插件实现服务器端无需安装office组件导出word的功能
#region生成的excel文件命名和确保文件的唯一性
Randomrd=newRandom();
DateTimedtime=DateTime.Now;
stringFilename="培训需求表"+dtime.Year.ToString()+dtime.Month.ToString()+dtime.Day.ToString()+dtime.Hour.ToString()+dtime.Minute.ToString()+dtime.Second.ToString()+Convert.ToString(rd.Next(99)*97+100)+".doc";
#endregion
#region定义变量
//建立Document物件,调用模块对word字体和table格式设置
stringserverpath=Constants.GetAppSettingValue("LocalLogicPath")+Constants.GetAppSettingValue("LocalTemplate")+"px_xqjh_tx.doc";
Documentdoc=newDocument(serverpath);
//建立DocumentBuilder物件
DocumentBuilderbuilder=newDocumentBuilder(doc);
#endregion
#region页面设置,设置页面为横向布局,设置纸张类型为A4纸或通过页面的宽度设置
//设置纸张布局
builder.PageSetup.PaperSize=PaperSize.A4;
//builder.PageSetup.Orientation=Aspose.Words.Orientation.Landscape;
#endregion
#region设置word全局的字体样式和字体大小
builder.RowFormat.Borders.LineStyle=LineStyle.Thick;
builder.RowFormat.HeightRule=HeightRule.Auto;
builder.RowFormat.Alignment=RowAlignment.Center;
//builder.Font.Name="仿宋-GB2312";
builder.Font.Name="宋体";
builder.Font.Size=10.5;//五号
#endregion
List<double>widthList=newList<double>();
doubleremarkWidth=0;
for(intk=0;k<18;k++)
{
builder.MoveToCell(0,1,k,0);//移动单元格
doublewidth=builder.CellFormat.Width;//获取单元格宽度
widthList.Add(width);
remarkWidth+=width;
//Universal.ExceptionLog(k.ToString(),width.ToString());
}
DataTabledtable=GetQuestionList();
if(dtable!=null&&dtable.Rows.Count>0)
{
#region绘制表格以及设置---------开头
doc.Range.Bookmarks["tbdw"].Text=this.lblcom.Text;
builder.MoveToBookmark("pxtx");//开始添加值
Aspose.Words.Tables.Tabletable=builder.StartTable();
builder.RowFormat.HeadingFormat=true;
builder.ParagraphFormat.Alignment=ParagraphAlignment.Center;
#endregion
#region数据集
for(inti=0;i<dtable.Rows.Count;i++)
{
for(intj=0;j<dtable.Columns.Count-3;j++)
{
#region列
builder.InsertCell();//添加一个单元格
builder.CellFormat.Borders.LineStyle=LineStyle.Single;
builder.CellFormat.Borders.Color=System.Drawing.Color.Black;
builder.CellFormat.Shading.BackgroundPatternColor=System.Drawing.Color.FromArgb(255,255,255);
builder.CellFormat.Width=widthList[j];
builder.CellFormat.VerticalMerge=Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalAlignment=CellVerticalAlignment.Top;//垂直居中对齐
builder.ParagraphFormat.Alignment=ParagraphAlignment.Left;//水平居中对齐
builder.Write(dtable.Rows[i][j].ToString().Trim());
//Universal.ExceptionLog((i+1).ToString()+"*"+(j+1).ToString(),dtable.Rows[i][j].ToString().Trim());
#endregion
}
builder.EndRow();
}
#endregion
#region备注列
builder.InsertCell();//添加一个单元格
builder.CellFormat.Borders.LineStyle=LineStyle.Single;
builder.CellFormat.Borders.Color=System.Drawing.Color.Black;
builder.CellFormat.Shading.BackgroundPatternColor=System.Drawing.Color.FromArgb(255,255,255);
builder.CellFormat.Width=remarkWidth;
builder.RowFormat.Height=50;
builder.CellFormat.VerticalMerge=Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalAlignment=CellVerticalAlignment.Top;//垂直居中对齐
builder.ParagraphFormat.Alignment=ParagraphAlignment.Left;//水平居中对齐
builder.Write("备注:");
builder.EndRow();
#endregion
#region绘制表格以及设置---------结尾
builder.EndTable();
doc.Range.Bookmarks["pxtx"].Text="";//清掉标示
#endregion
#region计划编制和审批人
doc.Range.Bookmarks["writername"].Text=dtable.Rows[0]["reg_staff_name"].ToString();
doc.Range.Bookmarks["checkname"].Text=dtable.Rows[0]["check_man_name"].ToString();
#endregion
}
dtable.Dispose();
#region保存数据.
doc.Save(Filename,SaveFormat.Doc,SaveType.OpenInWord,Response);//保存为doc,并打开
#endregion