【问题标题】:Add IDs To HTML Table Code String将 ID 添加到 HTML 表代码字符串
【发布时间】:2016-08-29 21:34:09
【问题描述】:

我有一个已导出为 HTML 文件的 Excel 电子表格。 Excel 文件具有某些单元格的“已定义名称”。我想以某种方式打开导出的 HTML 文件,然后通读 Excel 文件定义的名称集合,并为相应的 HTML 表格单元格提供一个 ID,我可以将其解析回 Excel 文件的定义名称。一旦单元格被赋予了 ID(和一个 runat="server" 属性),我想将修改后的 HTML 作为字符串/文件写出来,这样我就可以将它填充到我的 ASP 页面中。

谁能告诉我解决这个问题的方法?我以为我可以使用 System.Web.UI.HtmlControls.HtmlTable 类,然后将导出的 HTML 代码填充到 InnerHtml 属性中,然后开始比赛。唉,InnerHtml 属性对 HtmlTable(或 HtmlTableRow,但出于某种原因它对 HtmlTableCell 有效)无效(写入或读取)。

必须有一种方法可以做到这一点,只需将导出的 HTML 粘贴到 VS IDE 中的 aspx 页面中,然后将 id="MyTable" 和 runat="server" 添加到 <table> 标签将立即给出我可以在页面上下文中使用一个 HtmlTable 对象。

我显然不是要求完全充实和工作的代码,只是几行让我开始。请不要因为我的无知罪而杀了我!

如果它有帮助,我非常怀疑,这是导出时 Excel 的示例:

<table border=0 cellpadding=0 cellspacing=0 width=856 style='border-collapse:
 collapse;table-layout:fixed;width:642pt'>
 <tr class=xl1527583 height=30 style='mso-height-source:userset;height:22.5pt'>
  <td colspan=4 height=30 class=xl13127583 width=442 style='border-right:.5pt solid black;
  height:22.5pt;width:331pt'><a name="RANGE!A1:G197">BLAH FORM</a></td>
  <td class=xl6427583 width=91 style='border-left:none;width:68pt'>&nbsp;</td>
  <td class=xl6527583 width=62 style='width:47pt'>&nbsp;</td>
  <td class=xl6527583 width=261 style='width:196pt'>&nbsp;</td>
 </tr>
 <tr class=xl1527583 height=21 style='height:15.75pt'>
  <td colspan=4 height=21 class=xl13427583 style='border-right:.5pt solid black;
  height:15.75pt'>Title:</td>
  <td colspan=3 rowspan=3 class=xl11527583 width=414 style='border-right:.5pt solid black;
  border-bottom:.5pt solid black;width:311pt'><font class="font827583">BLAH 
  Management System<br>
    Document Number:</font><font class="font927583"><br>
    12.3.456A</font></td>
 </tr>
</table>

导出的 HTML 中有大约 4300 行 - 其中 2600 行是样式信息。他们偶尔会更改此表单,我不想每次都重新构建它。

【问题讨论】:

  • @Singh 我没有任何代码 - 我完全被难住了!

标签: c# html asp.net dom


【解决方案1】:

不是一个能够等待正确做事方式的人,这就是我想出的。正如我所指出的,VS IDE 很明显内置了一个 HTML 解析器,如果我只能弄清楚它在 VS IDE 之外“生活”在哪里以及如何从我的代码中访问它,那么它就可以很好地满足我的目的。我决定尝试以我目前知道的唯一方式使用它。我将导出的 HTML 代码粘贴到一个新的 aspx 网页表单页面中。然后我创建了如下所示的 Page_Init 事件处理代码。

// This is not absolutely necessary, but you may want to include it
using System.Web.UI.HtmlControls;

  protected void Page_PreInit(object sender, EventArgs e)
  {
    StringWriter strWtr;
    StringBuilder sbldr;
    HtmlTextWriter htmlWtr;

    // Put in table modifying code here
    this.tbl_Mine.Rows[0].ID = "r1";
    this.tbl_Mine.Rows[0].Cells[0].ID = "r1c1";
    sbldr = new StringBuilder();
    strWtr = new StringWriter(sbldr);
    htmlWtr = new HtmlTextWriter(strWtr);

    this.tbl_Mine.RenderControl(htmlWtr);
    File.WriteAllText(@"C:\Temp\HtmlTblMod.htm", sbldr.ToString());
  }

当启动时,页面会写出我想要的更新,这样我就可以将它们粘贴到真正的 aspx 页面中。虽然这可行,但有 GOT 是一种更好的方法来完成它......任何建议对这项任务采取理智的方法的人都会得到他们的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2013-02-09
    • 2018-01-07
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多