Использование listbox для отображения 2 столбцов из файла Excel

#excel #vb.net #webforms

#excel #vb.net #веб-формы

Вопрос:

Я должен отобразить лист Excel в ListBox в VB.net . До сих пор мне удавалось отображать первый столбец. Я использовал зоны для форматирования двух столбцов. Вот мой код для этой части:

 Dim fmtStr As String = "{0,15}, {1,15}"
  

Затем у меня есть этот код для отображения в ListBox:

 For i = 0 To AscW(ListBox1.Items.Count.ToString()(i = i   1)) - 1

cella = "A" amp; Convert.ToString(i   1)
cellb = "B" amp; Convert.ToString(i   1)

cella = aSheet.Range(cella).Value
cellb = aSheet.Range(cellb).Value
ListBox1.Items.Add(String.Format(fmtStr, "1", "2"))
If cella = "" Or cellb = "" Then
    ListBox1.Items.Add("")
Else
    ListBox1.Items.Add(String.Format(fmtStr, cella, cellb))
End If
  

Я получаю ошибки во время запуска.. Есть ли другой способ отображения столбцов рядом?

ОБНОВЛЕНИЕ: Все работает нормально, но вывод получается беспорядочным, вот так: Изображение

Комментарии:

1. Я не знаком с кодом в For строке. Что вы пытаетесь сделать? For i = 0 To ListBox1.Items.Count - 1 Затем вы делаете назначения для cella и cellb . Затем вы переназначаете эти две переменные в следующих 2 строках. Зачем делать первое назначение, если они будут перезаписаны немедленно?

2. Используйте отладчик для пошагового выполнения. Раздельное чтение значений и внесение их в список. Выясните, допущена ли ошибка при чтении значений или при заполнении списка. ListBox1.Items.Add(..) Перед If , безусловно, выглядит подозрительно для меня…

3. Ваш frmStr указывает индекс 0 и индекс 2. Затем String.Format(fmtStr, "1", "2") предоставляет вставки для индексов 0 и 1.

4. @Mary это найденный мной учебник, в который я внес некоторые коррективы..

5. Итак, сейчас все работает нормально, но расположение столбцов действительно беспорядочное. Есть ли способ привести это в порядок?

Ответ №1:

 ListBox1.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))