powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как перебрать листы Excel?
10 сообщений из 10, страница 1 из 1
Как перебрать листы Excel?
    #32638114
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Вопрос такой, лично я уже запарился. Мне нужно узнать все листы в открытой книге Excel, как это можно сделать?
Я иду таким путем:
Public appExcel As Excel.Application
Public wbkNew As Excel.Workbook
--------------------------------------
Dim ShCount As Int64
Dim ShName() As String
appExcel = New Excel.Application
wbkNew = appExcel.Workbooks.Open(FileName)
ShCount = appExcel.Sheets.Count
Do While i <= ShCount
ReDim ShName(i)
ShName(i) = appExcel.Sheets(i).GetType.Name ' Ошибка тут
MessageBox.Show(ShName(i).ToString)
i += 1
Loop

Ошибка - неверный тип переменной

Как быть?
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638171
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно открыть connection к файлу Excel и запросить схему по таблицам

PS: заранее извиняюсь за "плохой" язык
Код: plaintext
1.
2.
3.
4.
5.
OleDbConnection cn=new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\temp\Book1.xls;Extended Properties=Excel 8.0");
  cn.Open();
  DataTable tbl=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[ 0 ]);
  for(int i= 0 ; i<tbl.Rows.Count; i++)
  { Console.WriteLine(Convert.ToString(tbl.Rows[i]["TABLE_NAME"]));
  }
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638185
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тоже что из базуки по мухе ))
Это не лучший вариант на мой взгляд. Всеравно большое спасибо Может попроще как?
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638198
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так куда уж проще - всего 2 строки кода. причем Excel на машине не нужен и не надо тащить за своим приложением раппер для Interop :)
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638229
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил :))
Dim wks As Excel.Worksheet
For Each wks In appExcel.Worksheets
ReDim ShName(i)
ShName(i) = wks.Name.ToString
MessageBox.Show(ShName(i))
i += 1
Next wks

Мне кааца так удобнее :)
Но всеравно благодарю!
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638241
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
  Dim exsh As Excel.Worksheet
 
  For Each exsh In ThisWorkbook.Sheets
    MessageBox.Show(exsh.Name.ToString)
  Next exsh
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638245
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
апаздал :)
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638329
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перевожу вариант кузя на хороший язык
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim cn As OleDbConnection = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\temp\Book1.xls;Extended Properties=Excel 8.0")
cn.Open()
Dim tbl As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object( 0 ) {})
Dim i As Integer =  0 
For i =  0  To tbl.Rows.Count -  1 
    Console.WriteLine((tbl.Rows(i)("TABLE_NAME")))
Next

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638376
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ну вы как хотите, а мне через COM удобнее

Кстати, вопросик заодно После сортировки Array.Sort(ShName) Вывожу на печать
For i = 0 To ShName.Length - 1
MessageBox.Show(ShName(i))
Next
Выводятся пустые строки кроме последней. Чем бы это могло быть вызвано?
...
Рейтинг: 0 / 0
Как перебрать листы Excel?
    #32638452
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну коли никто не знает можно было сделать так
Array.Sort(ShName, 0, ShName.Length)
:) :) :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как перебрать листы Excel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]