大家好,小弟程式新手,看了網路上部落格學習"http://deepgreat02.blogspot.com/2016/03/20160302.html"
目前照著範例嘗試,卻出現texbox問題,一直找不到哪裡錯,所以想請教各位先進。
嚴重性 程式碼 說明 專案 檔案 行 隱藏項目狀態
錯誤 CS0103 名稱 'TextBox1' 不存在於目前的內容中 WaterWebApplication C:\Users\pipi\source\repos\WaterWebApplication\WaterWebApplication\WebForm1.aspx.cs 82 作用中
謝謝大家幫忙~~
程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml.Packaging;
using System.IO;
namespace Darkthread.OpenXml
{
/// <summary>
/// Ver 1.0 By Jeffrey Lee, 2009-07-29
/// </summary>
public class DocxHelper
{
/// <summary>
/// Replace the parser tags in docx document
/// </summary>
/// <param name="oxp">OpenXmlPart object</param>
/// <param name="dct">Dictionary contains parser tags to replace</param>
private static void parse(OpenXmlPart oxp, Dictionary<string, string> dct)
{
string xmlString = null;
using (StreamReader sr = new StreamReader(oxp.GetStream()))
{ xmlString = sr.ReadToEnd(); }
foreach (string key in dct.Keys)
xmlString = xmlString.Replace("[$" + key + "$]", dct[key]);
using (StreamWriter sw = new StreamWriter(oxp.GetStream(FileMode.Create)))
{ sw.Write(xmlString); }
}
/// <summary>
/// Parse template file and replace all parser tags, return the binary content of
/// new docx file.
/// </summary>
/// <param name="templateFile">template file path</param>
/// <param name="dct">a Dictionary containing parser tags and values</param>
/// <returns></returns>
public static byte[] MakeDocx(string templateFile, Dictionary<string, string> dct)
{
string tempFile = Path.GetTempPath() + ".docx";
File.Copy(templateFile, tempFile);
using (WordprocessingDocument wd = WordprocessingDocument.Open(tempFile, true))
{
//Replace document body
parse(wd.MainDocumentPart, dct);
foreach (HeaderPart hp in wd.MainDocumentPart.HeaderParts)
parse(hp, dct);
foreach (FooterPart fp in wd.MainDocumentPart.FooterParts)
parse(fp, dct);
}
byte[] buff = File.ReadAllBytes(tempFile);
File.Delete(tempFile);
return buff;
}
}
}
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextBox2.Text = DateTime.Now.ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
string template = Server.MapPath("Notice.docx");
Dictionary<string, string> dct = new Dictionary<string, string>()
{ { "today", DateTime.Today.ToString("yyyy-MM-dd") },
{ "name", TextBox1.Text },
{ "addr", TextBox2.Text },
};
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment;filename=Notice.docx");
Response.BinaryWrite(
Darkthread.OpenXml.DocxHelper.MakeDocx(
Server.MapPath("Notice.docx"),
dct)
);
Response.End();
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WaterWebApplication.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<p>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>第一個</asp:ListItem>
<asp:ListItem>第二個</asp:ListItem>
</asp:DropDownList>
</p>
<p>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" style="height: 32px" />
</p>
</form>
</body>
</html>
還是回答好了:
因為你頁面上用的component是定義在這裡,如果namespace不一致的話,當然找不到。其實你查一下:
https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/compiler-messages/cs0103
就可能會有線索。