2016-08-26 2 views
0

У меня есть таблица Excel, которую я экспортировал в виде HTML-файла. Файл Excel имеет определенные имена для некоторых ячеек. Я хотел бы как-то открыть экспортированный HTML-файл, а затем прочитать в коллекции имен файлов в формате Excel и предоставить соответствующим ячейкам таблицы HTML идентификатор, который я могу проанализировать с помощью указанного имени файла Excel. После того, как ячейкам были присвоены идентификаторы (и атрибут runat = "server"), я хочу написать измененный HTML-код в виде строки/файла, чтобы я мог набить его на страницу ASP.Добавить идентификаторы в HTML-код таблицы Строка

Может ли кто-нибудь сказать мне, как это сделать? Я думал, что смогу использовать класс System.Web.UI.HtmlControls.HtmlTable, а затем просто загружаю свой экспортированный код HTML в свойство InnerHtml и отправляюсь на гонки. Увы, свойство InnerHtml недопустимо (писать или читать) для HtmlTable (или HtmlTableRow, но по какой-либо причине оно действительно для HtmlTableCell).

Должен быть способ сделать это, так как просто вставляем экспортированный HTML в aspx-страницу в VS IDE, а затем добавляем 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>

Есть ~ 4300 строк в экспортируемый HTML - 2600 из них - информация о стиле. Они будут иногда менять эту форму, и я не хочу постоянно ее перестраивать каждый раз, когда они это делают.

+0

поделитесь своим кодом. – Developer

+0

@Singh У меня нет никакого кода - я полностью в тупике! –

ответ

0

Не тот, у кого есть возможность ждать вокруг способ сделать что-то, вот что я придумал. Как я уже отмечал, VS IDE довольно явно имеет встроенный в него HTML-парсер, который будет отлично работать для моей цели, если бы я мог только выяснить, где он «жил» вне VS ID и как получить доступ, если из моего кода. Я решил попытаться использовать это единственным способом, которым я знаю, как на данный момент. Я вставил экспортированный 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, чтобы быть лучшим способом сделать это ... Любой, предлагающий разумный подход к этой задаче, получит их ответ.

Смежные вопросы