我怎么能做这样的事呢。我得到了这个错误

我正在尝试做一些像文档路径这样的事情,但它不是很正确。我的代码如下所示:
public bool PrintOnMicrosoftWord(string ID, string docPath)
{
string constring = "Data Source=DLX;Initial Catalog=K2;User ID=K2_User; Password=K2_User;";
using (SqlConnection con = new SqlConnection(constring))
{
con.Open();
string sqlQuery = "select * from [K2].[dbo].[E-MemoFinalPDF] where id = @id";
using (SqlCommand cmd = new SqlCommand(sqlQuery, con))
{
cmd.Parameters.AddWithValue("@id", ID);
using (SqlDataReader rd = cmd.ExecuteReader())
{
try
{
if (rd.Read())
{
string to_Field = rd["To_Field"].ToString();
string from_field = rd["From_Field"].ToString();
string copy_field = rd["copy_field"].ToString();
string date_field = rd["date_field"].ToString();
string subject_field = rd["Subject"].ToString();
string manname1 = rd["ManName1"].ToString();
string manname2 = rd["ManName2"].ToString();
string manname3 = rd["ManName3"].ToString();
string manname4 = rd["ManName4"].ToString();
string manname5 = rd["ManName5"].ToString();
string manname10 = rd["ManName10"].ToString();
string ManDesg1 = rd["ManDesg1"].ToString();
string ManDesg2 = rd["ManDesg2"].ToString();
string ManDesg3 = rd["ManDesg3"].ToString();
string ManDesg4 = rd["ManDesg4"].ToString();
string ManDesg5 = rd["ManDesg5"].ToString();
string ManDesg10 = rd["ManDesg10"].ToString();
string approval1 = rd["Approval1"].ToString();
string approval2 = rd["Approval2"].ToString();
string approval3 = rd["Approval3"].ToString();
string approval4 = rd["Approval4"].ToString();
string approval5 = rd["Approval5"].ToString();
string approval10 = rd["Approval10"].ToString();
//print information on Docx Document
using (WordprocessingDocument doc = WordprocessingDocument.Open(docPath, true))
{
MainDocumentPart mainPart = doc.MainDocumentPart;
SdtElement to_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "To").Single();
SdtElement from_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "From").Single();
SdtElement copy_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Copy").Single();
SdtElement date_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Date").Single();
SdtElement subject_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Subject").Single();
SdtElement manname1_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName1").Single();
SdtElement manname2_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName2").Single();
SdtElement manname3_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName3").Single();
SdtElement manname4_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName4").Single();
SdtElement manname5_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName5").Single();
SdtElement manname10_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName10").Single();
SdtElement mandesg1_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManDesg1").Single();
SdtElement mandesg2_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManDesg2").Single();
SdtElement mandesg3_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManDesg3").Single();
SdtElement mandesg4_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManDesg4").Single();
SdtElement mandesg5_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManDesg5").Single();
SdtElement mandesg10_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "ManName10").Single();
SdtElement approval1_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval1").Single();
SdtElement approval2_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval2").Single();
SdtElement approval3_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval3").Single();
SdtElement approval4_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval4").Single();
SdtElement approval5_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval5").Single();
SdtElement approval10_block = mainPart.Document.Body.Descendants<SdtElement>().Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "Approval10").Single();
Text to = to_block.Descendants<Text>().Single();
Text from = from_block.Descendants<Text>().Single();
Text copy = copy_block.Descendants<Text>().Single();
Text date = date_block.Descendants<Text>().Single();
Text subject = subject_block.Descendants<Text>().Single();
Text manager1 = manname1_block.Descendants<Text>().Single();
Text manager2 = manname2_block.Descendants<Text>().Single();
Text manager3 = manname3_block.Descendants<Text>().Single();
Text manager4 = manname4_block.Descendants<Text>().Single();
Text manager5 = manname5_block.Descendants<Text>().Single();
Text manager10 = manname10_block.Descendants<Text>().Single();
Text mandesg1 = mandesg1_block.Descendants<Text>().Single();
Text mandesg2 = mandesg2_block.Descendants<Text>().Single();
Text mandesg3 = mandesg3_block.Descendants<Text>().Single();
Text mandesg4 = mandesg4_block.Descendants<Text>().Single();
Text mandesg5 = mandesg5_block.Descendants<Text>().Single();
Text mandesg10 = mandesg10_block.Descendants<Text>().Single();
Text appr1 = approval1_block.Descendants<Text>().Single();
Text appr2 = approval2_block.Descendants<Text>().Single();
Text appr3 = approval3_block.Descendants<Text>().Single();
Text appr4 = approval4_block.Descendants<Text>().Single();
Text appr5 = approval5_block.Descendants<Text>().Single();
Text appr10 = approval10_block.Descendants<Text>().Single();
to.Text = to_Field;
from.Text = from_field;
copy.Text = to_Field;
date.Text = date_field;
subject.Text = subject_field;
manager1.Text = manname1;
manager2.Text = manname2;
manager3.Text = manname3;
manager4.Text = manname4;
manager5.Text = manname5;
mandesg1.Text = ManDesg1;
mandesg2.Text = ManDesg2;
mandesg3.Text = ManDesg3;
mandesg4.Text = ManDesg4;
mandesg5.Text = ManDesg5;
appr1.Text = approval1;
appr2.Text = approval2;
appr3.Text = approval3;
appr4.Text = approval4;
appr5.Text = approval5;
mainPart.Document.Save();
}
}
}
catch(Exception ex)
{
throw ex;
}
}
}
}
return true;
}找不到文档。我想知道为什么?我是不是好像错过了什么?这在我的visual studio中的iisexpress上工作得很好,但如果我想将它指向要引用或直接使用的路径,它会告诉我找不到文档。
发布于 2019-12-22 00:50:42
您正在向WordprocessingDocument.Open(string, bool)方法传递不正确的路径,该方法将抛出FileNotFoundException,因为至少在运行时环境中没有包含该路径的文档。因此,您需要了解如何指定驻留在CSS服务器上的不同类型内容的路径(例如,应用程序使用的内容;公共的静态资源,如CSS、JavaScript和图像文件)。
例如,在ASP.NET核心中,您可以使用IWebHostEnvironment接口的ContentRootPath和WebRootPath属性来查找相关的根路径。
因此,假设您的文档位于内容根目录下的某个文件夹中。假设_env是IWebHostEnvironment的一个实例,下面的代码示例演示如何指定要传递给WordprocessingDocument.Open(string, bool)方法的绝对路径。
string relativeDocPath = "path/relative/to/content/root/document.docx";
string absoluteDocPath = Path.Combine(_env.ContentRootPath, relativeDocPath);https://stackoverflow.com/questions/59387361
复制相似问题