说明:DeclarationTemplate.dot是插入字符的word模板
public void ExportDeclaration()
{
try
{
int intPeopleId = Convert.ToInt32(Request["PeopleID"]);
if (intPeopleId > 0)
{
string strSqlFormat = @"select t.Name ,
a.Charge ,
a.JudgeDate ,
a.PunishTime ,
a.ProhibitContent ,
a.JzStart ,
a.JzStop ,
b.ExecDate ,
d1.Name as JzType ,
d2.Name as DecisionUnit ,
d3.Name as JudgeUnit
from jz_people_baseinfo t
left outer join jz_people_prison a on a.PeopleID = t.ID
and a.Status = 1
left outer join jz_people_legal b on b.PeopleID = t.ID
and b.Status = 1
left outer join SysDict d1 on d1.DictID = t.JzType
left outer join SysDict d2 on d2.DictID = a.DecisionUnit
left outer join SysDict d3 on d3.DictID = b.JudgeUnit
where t.Status = 1
and t.ID = {0}";
string strSql = string.Format(strSqlFormat, intPeopleId);
DataSet ds = FXW.DBUtility.DbHelperSQL.Query(strSql);
if (ds != null && ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
if (dt != null)
{
DataRow dtr = dt.Rows[0];
DateTime dtmTemp = DateTime.MinValue;
Dictionary<string, string> dictBookMarks = new Dictionary<string, string>();
dictBookMarks.Add("Name", dtr["Name"].ToString());
dictBookMarks.Add("Charge", dtr["Charge"].ToString());
DateTime.TryParse(dtr["JudgeDate"].ToString(), out dtmTemp);
dictBookMarks.Add("JudgeDate", dtmTemp == DateTime.MinValue ? "" : dtmTemp.ToString("yyyy年MM月dd日"));
dictBookMarks.Add("PunishTime", dtr["PunishTime"].ToString());
dictBookMarks.Add("ProhibitContent", dtr["ProhibitContent"].ToString());
DateTime.TryParse(dtr["JzStart"].ToString(), out dtmTemp);
dictBookMarks.Add("JzStart", dtmTemp == DateTime.MinValue ? "" : dtmTemp.ToString("yyyy年MM月dd日"));
DateTime.TryParse(dtr["JzStop"].ToString(), out dtmTemp);
dictBookMarks.Add("JzStop", dtmTemp == DateTime.MinValue ? "" : dtmTemp.ToString("yyyy年MM月dd日"));
DateTime.TryParse(dtr["ExecDate"].ToString(), out dtmTemp);
dictBookMarks.Add("ExecDate", dtmTemp == DateTime.MinValue ? "" : dtmTemp.ToString("yyyy年MM月dd日"));
dictBookMarks.Add("JzType", dtr["JzType"].ToString());
dictBookMarks.Add("DecisionUnit", dtr["DecisionUnit"].ToString());
dictBookMarks.Add("JudgeUnit", dtr["JudgeUnit"].ToString());
ExportWord(string.Format("{0}", dtr["Name"].ToString()), "DeclarationTemplate", dictBookMarks);
dt.Dispose();
dt = null;
}
ds.Dispose();
ds = null;
}
}
}
catch (Exception ex)
{
WriteError(ex.Message);
}
}
/// <summary>
/// 通过模板导出word
/// </summary>
/// <param name="p_strTemplatePath">模板路径</param>
/// <param name="p_dictBookMarks">书签项</param>
private void ExportWord(string p_strFileName, string p_strTemplateFileName, Dictionary<string, string> p_dictBookMarks)
{
string strTemplateRootPath = Server.MapPath("~\\Template");
string strTemplateFilePath = string.Format("{0}\\{1}.dot", strTemplateRootPath, p_strTemplateFileName);
string strTempSavePath = string.Format("{0}\\{1}.doc", strTemplateRootPath, Guid.NewGuid().ToString());
Microsoft.Office.Interop.Word._Application appWord = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word._Document docFile = null;
try
{
appWord.Visible = false;
object objTrue = true;
object objFalse = false;
object objTemplate = strTemplateFilePath;
object objDocType = Microsoft.Office.Interop.Word.WdDocumentType.wdTypeDocument;
docFile = appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue);
//给书签赋值
foreach (string strKey in p_dictBookMarks.Keys)
{
object objKey = strKey;
docFile.Bookmarks.get_Item(ref objKey).Range.Text = p_dictBookMarks[strKey];
}
object filename = strTempSavePath;
object miss = System.Reflection.Missing.Value;
docFile.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object missingValue = Type.Missing;
object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
docFile.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Quit(ref miss, ref miss, ref miss);
docFile = null;
appWord = null;
FileInfo DownloadFile = new FileInfo(strTempSavePath);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(string.Format("{0}.doc", p_strFileName), System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
catch (Exception ex)
{
//捕捉异常,如果出现异常则清空实例,退出word,同时释放资源
string aa = ex.ToString();
object miss = System.Reflection.Missing.Value;
object missingValue = Type.Missing;
object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
docFile.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Quit(ref miss, ref miss, ref miss);
docFile = null;
appWord = null;
throw ex;
}
finally
{
if (File.Exists(strTempSavePath))
{
File.Delete(strTempSavePath);
}
}
}
浙公网安备 33010602011771号