2016-11-30 6 views
1

Мне было дано задание разбора формы документа Word и помещение его в лист Excel. Код ниже делает это с легкостью .. но я недавно узнал, что мне нужно поместить эти данные в таблицу Excel, а не только ячейки листа.Данные для таблицы в листе Excel

For row = 1 To theTable.Rows.Count `until end of rows 
       isHeaderOrNot = theTable.Cell(row, 0).Range.Text `if first field in row is a header 
       If isHeaderOrNot.Contains("Section") Or isHeaderOrNot.Contains("Field") Then Continue For 
       keyText = theTable.Cell(row, 2).Range.Text `gets key text 
       valueText = theTable.Cell(row, 3).Range.Text `gets value text 
       cleanStringKey = Regex.Replace(keyText, Chr(7), "") `clean strings 
       cleanStringValue = Regex.Replace(valueText, Chr(7), "") 


       xlWorkSheet.Cells(1, column) = cleanStringKey `puts key in row 1 and column n 
       xlWorkSheet.Cells(2, column) = cleanStringValue `puts value in row 2 column n 

       column = column + 1 `increment column 
      Next 

мне было интересно, если я должен был бы полностью изменить свой код, чтобы сделать его столик ... Короче идти от

enter image description here

Для

enter image description here

Я совершенно новичок в VB.net, поэтому, если бы вы могли, все глубже было как можно больше.

+0

Я уверен, что вы можете просто выделить все данные, перейдите в Insert -> Table. И он должен автоматически форматироваться, и вы можете выбрать, есть ли у него заголовки, и это похоже на то, что вы делаете. – BruceWayne

+0

Я уверен, что он хочет какой-то тип автоматизации, так как его пример показывает, что он знает, как это сделать вручную. Если вы уменьшите переменную как listobject и установите ее в свой диапазон, она превратится в таблицу. Не уверен, как это происходит в VB, но довольно сжато в VBA. – nbayly

+0

Да, я ищу некоторую автоматизацию. Не знаю, помогает это или нет, но если вы щелкнете по ячейке «A1», а затем нажмите «Вставить таблицу», она создаст таблицу так же, как мне бы хотелось, чтобы она не попала во все данные – Bob

ответ

1

Add метод WorkSheet.ListObject для создания нового списка (таблицы).

Пример

После добавления ссылки на Microsoft.Office.Interop.Excel Добавить этот импорт в виде:

Imports XL = Microsoft.Office.Interop.Excel 

Затем используйте такой код, чтобы создать список:

Dim Application = New XL.Application() 
Application.Visible = True 
Dim book = Application.Workbooks.Add() 
Dim sheet = DirectCast(book.Worksheets(1), XL.Worksheet) 
sheet.Cells(1, 1) = "Product" 
sheet.Cells(1, 2) = "Price" 
sheet.Cells(2, 1) = "Product 1" 
sheet.Cells(2, 2) = "100" 
sheet.Cells(3, 1) = "Product 2" 
sheet.Cells(3, 2) = "200" 
sheet.Cells(4, 1) = "Product 3" 
sheet.Cells(4, 2) = "300" 
Dim list = sheet.ListObjects.Add(_ 
       XL.XlListObjectSourceType.xlSrcRange, _ 
       sheet.Range(sheet.Cells(1, 1), sheet.Cells(4, 2)), _ 
       Type.Missing, XL.XlYesNoGuess.xlYes) 

Тогда вы увидите, этот результат:

enter image description here