开发工具:vs2019
语言:C#
数据库:Oracle
一、利用NuGet程序包安装Aspose.Words;
二、新建Word文档,使用插入书签功能
三、代码
private void CreatePdfReport_PACS(string _accno)
{
DataSet ds = new System.Data.DataSet();
DataTable dt = new System.Data.DataTable();
OracleDataAdapter dr = new Oracle.DataAccess.Client.OracleDataAdapter();
string cmdText, IDCardNo, msg;
OracleCommand Cmd_Procedure = new OracleCommand();
string filePath, TemplatePath, TemplateFile, folderPath;
cmdText = "";
msg = "";
string OpTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
try
{
Conn = new OracleConnection(ConnectionStr);
IDCardNo = _accno;
OracleCommand cmd = new OracleCommand();
cmd.Connection = Conn;
ConnOpen();
//获取报告列表
cmdText = "Select * from view_getpatientinfo where accno='" + IDCardNo + "'";
cmd.CommandText = cmdText;
dt.Clear();
dr.SelectCommand = new Oracle.DataAccess.Client.OracleCommand(cmd.CommandText, Conn);
dr.Fill(ds, "5");
dt = ds.Tables["5"];
if (dt.Rows.Count == 0)
{
msg = "没有查询到标本号(" + IDCardNo + ")的检查报告,检查报告未完成。";
return;
}
//判断文件夹是否存在, 不存在创建文件夹
folderPath = PdfPath + "PACS\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString() + "\\" + DateTime.Now.Day.ToString();
//创建文档对象
if (!Directory.Exists(folderPath))//判断是否存在
{
Directory.CreateDirectory(folderPath);//创建新路径
}
filePath = folderPath + "\\" + IDCardNo + ".pdf";
TemplatePath = AppDomain.CurrentDomain.BaseDirectory + "Template\\";
TemplateFile = TemplatePath + "CR检查报告单.docx";
wordToPDF wtp = new wordToPDF();
Aspose.Words.Document doc= wtp.WordToPdf(TemplateFile);
wtp.InsertValue("jcrq", dt.Rows[0]["check_date"].ToString());
wtp.InsertValue("jcbh", dt.Rows[0]["accno"].ToString());
wtp.InsertValue("H1", dt.Rows[0]["h1"].ToString());
wtp.InsertValue("H2", dt.Rows[0]["h2"].ToString());
wtp.InsertValue("H3", dt.Rows[0]["h3"].ToString());
wtp.InsertValue("jcsj", dt.Rows[0]["DESCRIPTION"].ToString());
wtp.InsertValue("jcts", dt.Rows[0]["IMPRESSION"].ToString());
wtp.InsertValue("H4", dt.Rows[0]["h4"].ToString());
//wtp.InsertValue("bgr", dt.Rows[0]["REPORTDOC"].ToString());
//wtp.InsertValue("shr", dt.Rows[0]["COMDOC"].ToString());
wtp.SaveFile(filePath, Aspose.Words.SaveFormat.Pdf);
String strsql;
Cmd_Procedure.Connection = Conn;
Cmd_Procedure.CommandType = CommandType.StoredProcedure;
Trans = Conn.BeginTransaction();
strsql = "zl_报告生成记录_Insert";
Cmd_Procedure.CommandText = strsql;
Cmd_Procedure.Parameters.Clear();
OracleParameter P2_1 = new OracleParameter("报告ID_In", OracleDbType.Varchar2, ParameterDirection.Input);
OracleParameter P2_2 = new OracleParameter("检查时间_In", OracleDbType.Date, ParameterDirection.Input);
OracleParameter P2_3 = new OracleParameter("审核时间_In", OracleDbType.Date, ParameterDirection.Input);
OracleParameter P2_4 = new OracleParameter("姓名_In", OracleDbType.Varchar2, ParameterDirection.Input);
OracleParameter P2_5 = new OracleParameter("检查号_In", OracleDbType.Varchar2, ParameterDirection.Input);
OracleParameter P2_6 = new OracleParameter("报告地址_In", OracleDbType.Varchar2, ParameterDirection.Input);
OracleParameter P2_7 = new OracleParameter("报告类型_In", OracleDbType.Varchar2, ParameterDirection.Input);
P2_1.Value = dt.Rows[0]["ReportKey"].ToString();
P2_2.Value = Convert.ToDateTime(dt.Rows[0]["CHECK_DATE"].ToString());
P2_3.Value = Convert.ToDateTime(dt.Rows[0]["AUDIT_time"].ToString());
P2_4.Value = dt.Rows[0]["NAME"].ToString();
P2_5.Value = dt.Rows[0]["ACCNO"].ToString();
P2_6.Value = PdfPathHttp + "PACS\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString() + "\\" + DateTime.Now.Day.ToString() + "\\" + IDCardNo + ".pdf";
P2_7.Value = "2";
Cmd_Procedure.Parameters.Add(P2_1);
Cmd_Procedure.Parameters.Add(P2_2);
Cmd_Procedure.Parameters.Add(P2_3);
Cmd_Procedure.Parameters.Add(P2_4);
Cmd_Procedure.Parameters.Add(P2_5);
Cmd_Procedure.Parameters.Add(P2_6);
Cmd_Procedure.Parameters.Add(P2_7);
Cmd_Procedure.ExecuteNonQuery();
Trans.Commit();
tb_output.AppendText(OpTime + ":" + "检查号:" + _accno + "生成检查报告成功:" + filePath + "\r\n");
msg = "success";
//清理资源
cmd.Parameters.Clear();
cmd.Dispose();
cmd = null;
}
catch (Exception ex)
{
//写日志
msg = ex.Message.ToString();
tb_output.AppendText(OpTime + ":" + msg + "\r\n");
}
}```