重新排列HTML并导入Access

时间:2014-08-26 15:37:48

标签: html ms-access access-vba

问题:

我有一堆带有多个表的HTML,其中有两个是感兴趣的(上面发布)。第一个表描述了一个人,他们的地址,电话号码等。第二个表描述了有关其帐户的信息。两个表都有标题(<h3></h3>标记中的文本),可以通过它们引用它们。 我操作HTML相对比较新,所以我的第一个问题是如何将第一个表格导入Access数据库或Excel中,以便如果他们有50个这样的文档,那么 在这个例子中,是姓名,地址,电话,年龄,每行是不同的人。

我的第二个问题稍微复杂一点。第二个表中嵌入了另一个表。从本质上讲,这意味着需要将大量较小的拆分表放入一个完整的表中。也就是说,我希望找到一种方法将其作为主表中的附加列(实际给出自己的标题) 住这个小桌子。我们的想法是以与第一个表相同的方式操作此表。最后一个问题是这些表没有一个可以用来联系它们的公共字段,所以需要一种方法来 第一个表中的字段,并将其附加到第二个表。考虑到这一点,我认为所需的步骤可归纳如下:

  
      
  1. 对于单个HTML文档,请使用第二个表并执行   附加较小表格标签所必需的操作   主表格<th colspan="7"></th>到格式化的部分   如

  2.   
`<tr> <td style="text-align: center;">1</td> <td
style="text-align: center;">10/2013</td> <td style="text-align:
center;">12345678</td> <td style="text-align: right;">0167</td> <td
    style="text-align: center;">10/2014</td> <td style="text-align:
right;">0036</td> <td style="text-align: center;">1111</td>   </tr>`
so that all 9 pieces of data get their own column upon import.

2. Take the column whose <th></th> tags contain the string "Name" and add it as the first column in the second table.

3. Import the first table's <td></td> tags to Access.

4. Import the second table's now revised <td></td> tags to Access.

5. Repeat for all HTML documents so that there are two complete tables.

HTML:

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>Customer File</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
          body { width: 800px; margin: 40px auto; font-family: Verdana; }
          h1 { font-size: 18pt; margin-bottom: 20px; }
          h2 { font-size: 14pt; margin-bottom: 20px; }
          h3 { font-size: 11pt; text-decoration: underline; margin-bottom: 20px; }
          th { text-align: left; }
          hr { height: 1px; border: none; margin: 20px 0; color: #ccc; background-color: #ccc; }
          .text { font-size: 10pt; }
        </style>
      </head>
      <body>


      <!--FIRST TABLE--> 

    <h3>Customer</h3>
            <table class="text" cellspacing="0" cellpadding="0" border="0">
              <tr>
                <th style="width: 12em;">Name</th>
                <td>Tom Thompson</td>
              </tr>
              <tr>
                <th>Address</th>
                <td>123 St., Vancouver, BC, V6Z 2M7</td>
              </tr>
              <tr>
                <th>Phone</th>
                <td>555-555-1233</td>
              </tr>
              <tr>
                <th>Date of Birth, Age</th>
                <td>03/04/1985, 29</td>
              </tr>
            </table>

       <!-- SECOND TABLE--> 

            <h3>Collection</h3>
            <table class="text" cellspacing="0" cellpadding="0" border="0" style="width: 640px;">
              <tr>
                <th style="text-align: center;">#</th>
                <th style="text-align: center;">Date Purchased</th>
                <th style="text-align: center;">Product Name</th>
                <th style="text-align: right;">$</th>
                <th style="text-align: center;">Date of Product Procurement</th>
                <th style="text-align: right;">Item Number</th>
                <th style="text-align: center;">Order Number</th>
              </tr>
              <tr>
                <td colspan="7">
                  <br />
                </td>
              </tr>
              <tr>
                <th colspan="7">VALUE MENU</th>
              </tr>
              <tr>
                <td style="text-align: center;">1</td>
                <td style="text-align: center;">05/10/2013</td>
                <td style="text-align: center;">Hamburger</td>
                <td style="text-align: right;">4.50</td>
                <td style="text-align: center;">01/10/2013</td>
                <td style="text-align: right;">0005</td>
                <td style="text-align: center;">5678345</td>
              </tr>
              <tr>
                <td colspan="7">
                  <table class="text" cellspacing="0" cellpadding="0" border="0">
                    <tr>
                      <th style="width: 10em;">Cashier Name</th>
                      <td>Sam Johnson</td>
                    </tr>
                  </table>
                </td>
              </tr>
            </table>
       </body>
       </html>

2 个答案:

答案 0 :(得分:0)

您正在使用Access,因此您在Windows上。看看html agility pack

它使解析和分割html几乎很有趣: - )

从VBA使用我建议在VB.NET或C#中实现该功能,并通过COM公开生成的API,由VBA使用。 其他选项可能是在VB.NET或C#

中使用VSTO创建AddIn 关于通过COM接口公开.NET代码以通过VBA使用的

Article on codeplex可能是一个明星点。

答案 1 :(得分:0)

有时通过COM自动化在EXCEL中打开HTML文件更容易,并通过ActiveSheet.Cells(row,col)

将信息读入MS Access