您的位置:首页 > 其它

word 导出(带有一个图片,一张datatable)

2012-07-03 09:07 337 查看
View Code

/// <summary>
/// 不依赖Com组件利用第三方开源控件(DocX)导出标准Word文件,仅支持2007格式
/// !以下导出仅适用于特定的格式(一个图片和一个DataTable),如要用于其他导出,请自行修改
/// </summary>
/// <param name="dt">要导出的DataTable</param>
/// <param name="imagePath">要导出的图片路径</param>
/// <param name="fileName">要导出的文件名称</param>
public void ExportWord(DataTable dt, string imagePath, string fileName)
{
//新建一个document文档
Novacode.DocX document = Novacode.DocX.Create(HttpContext.Current.Server.MapPath("Blank07.docx"));

System.IO.MemoryStream file = new System.IO.MemoryStream();
//在这里写入word文件内容

//插入统计结果图片
Novacode.Image image = document.AddImage(imagePath);
Novacode.Picture picture = image.CreatePicture();

document.InsertParagraph().AppendPicture(picture);

//插入统计结果表格数据,并设置单元格样式
Novacode.Table table = document.InsertTable(dt.Rows.Count, dt.Columns.Count);
//边框样式
Novacode.Border border = new Novacode.Border(Novacode.BorderStyle.Tcbs_single, Novacode.BorderSize.two, 0, System.Drawing.Color.Black);
//table.SetBorder(Novacode.TableBorderType.Bottom,Novacode.Border
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
table.Rows[i].Cells[j].Paragraphs[0].Append(dt.Rows[i][j].ToString());
table.Rows[i].Cells[j].SetBorder(Novacode.TableCellBorderType.Top, border);
table.Rows[i].Cells[j].SetBorder(Novacode.TableCellBorderType.Right, border);
table.Rows[i].Cells[j].SetBorder(Novacode.TableCellBorderType.Bottom, border);
table.Rows[i].Cells[j].SetBorder(Novacode.TableCellBorderType.Left, border);
}
}

//插入统计结果表格标题,并设置单元格样式
Novacode.Row tableHeader = table.InsertRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
tableHeader.Cells[i].Paragraphs[0].Append(dt.Columns[i].ColumnName);
tableHeader.Cells[i].SetBorder(Novacode.TableCellBorderType.Top, border);
tableHeader.Cells[i].SetBorder(Novacode.TableCellBorderType.Right, border);
tableHeader.Cells[i].SetBorder(Novacode.TableCellBorderType.Bottom, border);
tableHeader.Cells[i].SetBorder(Novacode.TableCellBorderType.Left, border);
}

document.SaveAs(file);
file.Close();
response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
string filename = HttpUtility.UrlEncode(fileName + ".docx");//url编码.防止中文乱码.
response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
response.BinaryWrite(file.GetBuffer());
response.Flush();
response.End();
}


说明:自己只是收集,以便以后自己的使用!希望对你也有所帮助!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: