Vb net imports excel

  • Remove From My Forums
  • Question

  • Hi I am trying to open an excel spreadsheet using a button click event and i use this statement in my code ..i guess the header has to be with the «imports …..» but i am not sure what it is ?

    Dim excel As New Microsoft.office.interop.excel.application.class   but it underlines the entire statement and says that it is not defined..pls advise..

     am i supposed to use a header?  if yes? which one ?


    KB — Knowledge is Power!

    • Edited by

      Friday, August 8, 2008 7:26 PM
      edited

Answers

  • I’ll tell u something funny.. i clicked on project add reference and recent tab and clicked on ms office 11.0 and ms exce 11.0 in that and hit ok and now the microsoft.office.interop comes without any error in my code ! why did that happen ?any idea ?


    KB — Knowledge is Power!

    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:38 PM
    • Unmarked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:38 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM
    • Marked as answer by
      kavita bhaskaran kukkala
      Wednesday, August 13, 2008 4:39 PM

11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

1

22.11.2011, 14:56. Показов 52941. Ответов 24


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
Приведите, если не сложно, пару примеров работы с excel. Создание, открытие книги/страницы, сохрание в информации в определенную ячейку, сохранение документа.



0



1 / 1 / 0

Регистрация: 19.09.2011

Сообщений: 51

22.11.2011, 15:03

2

Excle? Excele? Не знакомый софт. Или вы про MS Office | Excel?



0



11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

22.11.2011, 15:06

 [ТС]

3

excel, офис, конечно, *.xls



0



Памирыч

Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

22.11.2011, 15:24

4

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Exc As Object
        Exc = CreateObject("Excel.Application")
        Exc.Workbooks.Open("C:1.xls").Activate()
        Exc.Cells(1, 1) = "ПРИВЕТ!"
        Exc.Rows(7).Insert(Shift:=-4121)
        Exc.ActiveWorkbook.Save()
        Exc.ActiveWorkbook.Close()
        Exc.Quit()
        Exc = Nothing
    End Sub
End Class



7



11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

22.11.2011, 15:35

 [ТС]

5

Памирыч, а лист книги эксель где указывать?



0



Юпатов Дмитрий

1706 / 1194 / 227

Регистрация: 23.12.2010

Сообщений: 1,526

22.11.2011, 15:39

6

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1)Добавляем в референцы ссылку на Microsoft Excel 11 object library

далее:

VB.NET
1
2
3
4
Dim _excel as new microsoft.office.interop.excel.application
Dim _workbook as microsoft.office.interop.excel.workbook
_excel.visible=true'отображаем пустой эксель на экране
_workbook=excel.worcbooks.add()'cjplftv новую книгу на основе шаблона по-умолчанию. Если нужен конкретный шаблон, то в скобках указать полный путь к файлу, который будет шаблоном

итог: имеешь экземпляр экселя в переменной _excel и экземпляр книги _workbook. Делай с ними что хошь.
Активация нужного листа в книге:

VB.NET
1
_workbook.sheets(2).activate

активирует лист за номером 2 в книге.
Все остальное — см члены переменных _excel и _workbook. Плюс пользуйся макрорекордером, встроенным в эксель. Там синтаксис на 90% совпадет, ну разве что по мелочам поменяешь.

Еще: в самом начале мы добавили ссылку на библу экселя. Это называется «раннее связывание».
Можно было не добавлять. Тогда это позднее связывание. Тогда ситуация такая:

VB.NET
1
2
Dim _excel as object
Dim _workbook as object

если эксель запущен, можно подхватить активный экземпляр

VB.NET
1
_excel = getobject("Excel.Application")

или, если фрагмент выше в итоге останется nothing, можно создать новый

VB.NET
1
_excel = createobject("Excel.Application")

далее так же как и по первому примеру. Только нужно хорошо знать объектную модель экселя: члены не будут видны при написании кода.
Примерно так. За 100% корректность синтаксиса не ручаюсь — писал на коленке, но работаю с вордом и экселем часто, так что сильно не наопечатывался.



4



am-wrag

11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

24.11.2011, 14:48

 [ТС]

7

Цитата
Сообщение от Юпатов Дмитрий
Посмотреть сообщение

1)Добавляем в референцы ссылку на Microsoft Excel 11 object library

Обьясни как.
Я так понял это через

VB.NET
1
Import ...

А здесь что именно писать?

Добавлено через 6 минут
Нашол где чо, только у меня Microsoft Excel 14 object library или здесь без разницы, прсото версия поновей?

Добавлено через 6 минут
От себя дабавлю что пример Памирыч не применим для стартового изучения, поскольку без импорта библиотеки не выскакивают подсказки с вариантами, а без этого лично мне очень тяжео разобраться.



0



Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

24.11.2011, 14:58

8

Цитата
Сообщение от am-wrag
Посмотреть сообщение

не применим для стартового изучения

Согласен, но я отказался от библ, уж больно их не охота таскать за прогой.
Насчет стартового изучения — полностью за.



0



am-wrag

11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

24.11.2011, 17:27

 [ТС]

9

Обьясните плиз чем отличаются обьекты

VB.NET
1
2
Dim книга As Workbook, book As _Workbook
Dim лст As Worksheet, lst As _Worksheet

Допустим просто Worksheet совершенно не подходит для работы, у него совершенно отсутвуют параметры в отличие от такогоже но с _



0



1706 / 1194 / 227

Регистрация: 23.12.2010

Сообщений: 1,526

24.11.2011, 17:52

10

Цитата
Сообщение от am-wrag
Посмотреть сообщение

меня Microsoft Excel 14 object library

это у тебя просо офис поновее. Кажется 2010.

Цитата
Сообщение от Памирыч
Посмотреть сообщение

Согласен, но я отказался от библ, уж больно их не охота таскать за прогой

В данном случае и не надо таскать библу экселя с собой. Для этого в референцах параметр «копировать локально» ставим в false и все, библа не будет добавляться в пакет установки. А работать даже перетащенная, она без установленного экселя все равно не будет. Так что на конечной машине наличие экселя — обязательно.

Цитата
Сообщение от Памирыч
Посмотреть сообщение

Насчет стартового изучения — полностью за

Конечно, но можно пойти на хитрость:
1) в начале проектирования добавляем библу, пишем код, тестим.
2) На финише типы переменных, завязанные на эту библу, меняем на object, в референцах удаляем ссылку на библу.
Вуаля! Получаем в итоге позднее связывание с удобствами проектирования раннего.



2



am-wrag

11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

28.11.2011, 16:27

 [ТС]

11

Почемуто после каждого сохраниения в процессах остается событие EXCEL.EXE, которое продолжает множится при последующих сохранениях.
В коде имеется

VB.NET
1
xls.ActiveWorkbook.Close() :  xls.Quit()



1



Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

28.11.2011, 16:48

12

am-wrag, после закрытия программы процессы продолжают висеть?



0



Юпатов Дмитрий

1706 / 1194 / 227

Регистрация: 23.12.2010

Сообщений: 1,526

28.11.2011, 16:57

13

попробуй сделать после всего

VB.NET
1
xls.Dispose

потому как хоть ты эксель и закрыл, но переменная осталась.
Ручаться не стану, но вполне может помочь.
Однако это не очень красиво, т.к. снова использовать объект xls ты сможешь только после рестарта программы (уничтожаем саму переменную, а не значение)



1



11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

28.11.2011, 17:44

 [ТС]

14

Цитата
Сообщение от Памирыч
Посмотреть сообщение

am-wrag, после закрытия программы процессы продолжают висеть?

Когда прога закрывается процессы пропадают. Заметил тут ещё такую чтуку: сохранять позволяет в эксель токлько первый раз, затем процесс сохранения не пашет…



1



Памирыч

Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

28.11.2011, 17:59

15

Работа такого кода представлена на скрине, в ходе работы программы не было ни одной ошибки:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Form1
    Dim appExcel As Object
    Dim I As Integer = 0
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        appExcel = CreateObject("Excel.Application")
        appExcel.Workbooks.Open("C:1.xls")
        appExcel.Visible = False
        With appExcel.ActiveSheet
            .Range("C" & I + 1).Value = "QWERTY" & I
        End With
        appExcel.Workbooks(1).Close(True)
        appExcel.Quit()
        I += 1
    End Sub
End Class

Миниатюры

Работа с excel: Открытие, чтение, запись, сохранение книги
 



5



am-wrag

11 / 11 / 2

Регистрация: 17.02.2011

Сообщений: 145

29.11.2011, 12:47

 [ТС]

16

Вот мои проекты, вроде отличий минимум… Код загрузки информации в лист бокс работает прекрасно(если не брать в расчет лишних процессoв). Код сохранения не сохраняет, ума не приложу почему…
Части кода отвечающие за передачу информации о контролах работают абсолютно верно, неодноркатно проверял. Проблема именно в процессе сохранения данных в эксель.

Код сохранения

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub SaveOpt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveOpt.Click
        SaveF.Filter = "Excele 2003 файл настроек (*.xls)|*.xls"
        SaveF.FileName = "Opt_XAR" : SaveF.ShowDialog()
        xls = New Microsoft.Office.Interop.Excel.Application
        Try
            книга = xls.Workbooks.Open(SaveF.FileName) : книга.Activate() : b = 0
        Catch
            книга = xls.Workbooks.Add : книга.Activate() : b = 1
        End Try
        лст = книга.Sheets(1) : c = 1
        For n = 0 To main.TabControl1.TabPages.Count - 1
            For i = c To c - 1 + main.TabControl1.TabPages(n).Controls.Count / 2
                лст.Cells(i, 1) = main.TabControl1.TabPages(n).Controls("LB" & i).Text
                лст.Cells(i, 2) = main.TabControl1.TabPages(n).Controls("TB" & i).Text
            Next
            If n = 0 Then c += 20 Else c += 30
        Next
        лст.Cells(1, 4) = main.Find_name.Text
        If b = 0 Then xls.ActiveWorkbook.Save() Else xls.ActiveWorkbook.SaveAs(SaveF.FileName)
        книга.Close(True) : xls.Quit()
    End Sub

Код загрузки

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 Private Sub OpnOpt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpnOpt.Click
        table = Nothing
        table = New Data.DataTable
        table.Columns.Add("1") : table.Columns.Add("2")
        OpnF.Filter = "Файл настроек (*.xls)|*.xls"
        OpnF.FileName = "Opt_XAR"
        OpnF.ShowDialog()
        Try
            xls = New Microsoft.Office.Interop.Excel.Application
            книга = xls.Workbooks.Open(OpnF.FileName)
            лст = книга.Sheets(1)
            InX.Items.Clear() 
            For i = 1 To лст.UsedRange.Rows.Count
                InX.Items.Add(лст.Cells(i, 1).value2)
                If лст.Cells(i, 2).value2 Is Nothing Then
                Else
                    table.Rows.Add()
                    table.Rows.Item(c).Item(0) = лст.Cells(i, 1).value2
                    table.Rows.Item(c).Item(1) = лст.Cells(i, 2).value2                    
                End If
            Next
            книга.Close(True) : xls.Quit() : ind = 1            
        Catch
            ind = 0
        End Try
    End Sub

Добавлено через 1 час 48 минут
Забыл про обьявления

VB.NET
1
2
3
4
5
6
7
8
9
Imports System.Data
Imports System.IO
Imports Microsoft.Office.Interop.Excel
Public ind, x As Integer
    Dim xls As Application
    Dim книга As Workbook
    Dim лст As _Worksheet, c, b As Integer 
    Dim rng As Range
    Public table As Data.DataTable



1



ctac1412

18 / 18 / 2

Регистрация: 12.02.2013

Сообщений: 387

12.04.2016, 12:44

17

Памирыч, Добрый день! Очень мало инфы по exel для неопытных пользователей в интернете. Если не затрудник, не могли бы взглянуть на проблему?
с тем как записать и вывести значение + закрывание процесса я разобрался…. Но теперь не могу сдеать основное действие.
Нужно найти первую ячейку в столбике B2 по формату( любой цвет который введем, допустим черный)Найти- разукрасить в красный и выдать нам сообщение, причем ячеек может быть не 1 , что мы и спрашиваем в inputbox. В vba у меня получилось, а сюда перенести не могу….. Ошибка выскакивает на _Excel.xlFormulas, xlPart, xlByColumns..в общем уточняющих… Как верно нужно объявлять? Он пишет что они не относятся к _Excel

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        Dim _Excel As New Application 'Приложение Excel
        Dim Книга As Workbook = _Excel.Workbooks.Open("C:UsersStanislavDesktoptest.xlsx", [ReadOnly]:=False) 'Открываем книгу
        Dim Лист As Worksheet = CType(Книга.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet) 'Первый лист книги
        Try
            _Excel.Range("B1").Select()
        With _Excel.Application.FindFormat.Font
            .Name = "Calibri"
            .FontStyle = "обычный"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
 
            .Color = -1003520
            .TintAndShade = 0
        End With
        _Excel.Cells.Find(What:="", After:=_Excel.ActiveCell, LookIn:=_Excel.xlFormulas, LookAt:=
        _Excel.xlPart, SearchOrder:=_Excel.xlByColumns, SearchDirection:=_Excel.xlNext, MatchCase:=
        False, SearchFormat:=True).Activate()
        _Excel.ActiveCell.Value = "Привет"

Добавлено через 37 минут
Памирыч, нашел рабочий пример на англиццком, если поможете подогнать под мою задачу, было бы отлично…. как задать формат поиска, а не row искать.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Imports Excel = Microsoft.Office.Interop.Excel
 
Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim xlApp As New Excel.Application
        Dim xlWb As Excel.Workbook
        Dim xlsheet As Excel.Worksheet
        Dim lRow As Long = 0
 
        With xlApp
            .Visible = True
 
            '~~> Open workbook
            xlWb = .Workbooks.Open("c:Sample.xlsx")
 
            '~~> Set it to the relevant sheet
            xlsheet = xlWb.Sheets("Sheet1")
 
            With xlsheet
                '~~> Check if there is any data in the sheet
                If xlApp.WorksheetFunction.CountA(.Cells) <> 0 Then
                    lRow = .Cells.Find(What:="*", _
                                  After:=.Range("A1"), _
                                  LookAt:=Excel.XlLookAt.xlPart, _
                                  LookIn:=Excel.XlFindLookIn.xlFormulas, _
                                  SearchOrder:=Excel.XlSearchOrder.xlByRows, _
                                  SearchDirection:=Excel.XlSearchDirection.xlPrevious, _
                                  MatchCase:=False).Row
                Else
                    lRow = 1
                End If
            End With
 
            MessageBox.Show("The last row in Sheet1 which has data is " & lRow)
 
            '~~> Close workbook and quit Excel
            xlWb.Close(False)
            xlApp.Quit()
 
            '~~> Clean Up
            releaseObject(xlsheet)
            releaseObject(xlWb)
            releaseObject(xlApp)
 
        End With
    End Sub
 
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub
End Class

Автор http://www.siddharthrout.com/2… rettyPhoto



1



Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

12.04.2016, 13:02

18

ctac1412, Я не знаток Экселя, увы. Будет лучше, если Вы будете обращаться не к конкретным пользователям, а ко всем; не нужно указывать ники. И лучше создавать свои темы.



1



Sallivan_Bidl

0 / 0 / 0

Регистрация: 12.07.2015

Сообщений: 2

24.08.2016, 19:45

19

Этот кусок кода реально помог почистить паразитные процессы Excel, остающиеся в системе.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'~~> Clean Up
            releaseObject(xlsheet)
            releaseObject(xlWb)
            releaseObject(xlApp)
 
        End With
    End Sub
 
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub

Только вот этого кода почему-то было недостаточно.

VB.NET
1
2
xlApp.Quit()
xlApp=Nothing

ctac1412, Спасибо!



0



174 / 64 / 13

Регистрация: 22.12.2015

Сообщений: 2,648

06.12.2016, 11:09

20

Цитата
Сообщение от Памирыч
Посмотреть сообщение

Exc.Rows(7).Insert(Shift:=-4121)

а это для чего?



0



In this tutorial, I will teach you how to read an excel file in Visual basic.net (VB.Net).

This tutorial can be integrated to your personalized vb.net project.

What is Visual Basic’s purpose?

The third-generation programming language was created to aid developers in the creation of Windows applications. It has a programming environment that allows programmers to write code in.exe or executable files. They can also utilize it to create in-house front-end solutions for interacting with huge databases. Because the language allows for continuing changes, you can keep coding and revising your work as needed.

However, there are some limits to the Microsoft Visual Basic download. If you want to make applications that take a long time to process, this software isn’t for you. That implies you won’t be able to use VB to create games or large apps because the system’s graphic interface requires a lot of memory and space. Furthermore, the language is limited to Microsoft and does not support other operating systems.

So let’s get started:

Step How to Read an Excel file in Visual Basic.Net

  • Step 1: First is open the Visual Basic, Select File on the menu, then click New and create a new project.

  • Step 2: Then a New Project Dialog will appear. You can rename your project, depending on what you like to name it. After that click OK

  • Step 3: Design your form like this just like what I’ve shown you below.
    Add a 2 Textbox and a Button

  • Step 4: After designing your form. Add a reference to Microsoft Excel 12.0 Object Library
    In your project menu click on Project– Add Reference – go to COM tab

Add Microsoft Excel 12.0 Object Library

  • Step 5: Then, go to the code page and add the following declarations:
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim APP As New Excel.Application
Dim worksheet As Excel.Worksheet
Dim workbook As Excel.Workbook
  • Step 6: Add this following code to Form_Load Event
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
workbook = APP.Workbooks.Open("C:UsersCliveDocumentsVisual Studio 2008clive projectswriteandreadwriteandreadbinDebugsales.xlsx")
worksheet = workbook.Worksheets("sheet1")
End Sub

Step 7: To get the value from Excel cell to TextBox. Add this following code to the Button Click Event.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
TextBox1.Text = worksheet.Cells(1, 1).Value
TextBox2.Text = worksheet.Cells(1, 2).Value
End Sub

Step 8: Then finally, add this code to save the Excel file and closes it.

Private Sub Form1_FormClosed(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosedEventArgs) _
Handles MyBase.FormClosed
workbook.Save()
workbook.Close()
App.Quit()
End Sub
  • Step 9: Click F5 to run the program.

Inquiries

If you have any questions or suggestions about How to Read an Excel file using Visual Basic.Net please contact me through our contact page or simply leave a comment below.

Download the Code Below

Download How to Read an Excel file using Visual Basic.Net Source code here.

Readers might read also:

  • How to Export DataGridView Data to Excel using VB.Net
  • How to Create an Excel File Using Visual Basic.Net
  • Basic Calculator Using Visual Basic.Net

If you want to get started with a little bit of advance topic in VB.Net you may start your lesson here on how to connect access database to vb.net. Watch the video here below.

In your form add a DataGrid "GridControl1" and a button "BtnImport_Click :

In your button BtnImport_Click add this code

  Private Sub BtnImport_Click(sender As Object, e As EventArgs) Handles BtnImport.Click
     Dim dialog As New OpenFileDialog()
                dialog.Filter = "Excel files |*.xls;*.xlsx"
                dialog.InitialDirectory = "C:"
                dialog.Title = "Veuillez sélectionner le fichier à importer"
                'Encrypt the selected file. I'll do this later. :)
                If dialog.ShowDialog() = DialogResult.OK Then   
                    Dim dt As DataTable
                    dt = ImportExceltoDatatable(dialog.FileName)
                    GridControl1.DataSource = dt
                    GridControl1.Visible = True
                    MsgBox(" done ! ", MsgBoxStyle.Information)
                End If
    End Sub 

And add this function in your form :

  Public Shared Function ImportExceltoDatatable(filepath As String) As DataTable
                ' string sqlquery= "Select * From [SheetName$] Where YourCondition";
                Dim dt As New DataTable
                Try
                    Dim ds As New DataSet()
                    Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filepath & ";Extended Properties=""Excel 12.0;HDR=YES;"""
                    Dim con As New OleDbConnection(constring & "")

                    con.Open()

                    Dim myTableName = con.GetSchema("Tables").Rows(0)("TABLE_NAME")
                    Dim sqlquery As String = String.Format("SELECT * FROM [{0}]", myTableName) ' "Select * From " & myTableName  
                    Dim da As New OleDbDataAdapter(sqlquery, con)
                    da.Fill(ds)  
                    dt = ds.Tables(0)
                    Return dt
                Catch ex As Exception
                    MsgBox(Err.Description, MsgBoxStyle.Critical)
                    Return dt
                End Try
            End Function

Hop that help you

In this article I will explain with an example, how to read and import Excel file (Excel sheet) data to GridView using ClosedXml library in ASP.Net using C# and VB.Net.

Download DocumentFormat.OpenXml and ClosedXml Libraries

You can download the libraries using the following download locations.

Note: The DLL files of both OpenXml and ClosedXml are present in the attached sample.

HTML Markup

The following HTML Markup consists of an ASP.Net FileUpload control, a Button and a GridView.

<asp:FileUpload ID=»FileUpload1″ runat=»server» />

<asp:Button ID=»btnImport» runat=»server» Text=»Import» OnClick=»ImportExcel» />

<hr />

<asp:GridView ID=»GridView1″ runat=»server»>

</asp:GridView>

Namespaces

You will need to import the following namespaces.

C#

using System.IO;

using System.Data;

using System.Collections.Generic;

using ClosedXML.Excel;

VB.Net

Imports System.IO

Imports System.Data

Imports System.Collections.Generic

Imports ClosedXML.Excel

Read and Import Excel data to DataTable using ClosedXml

When the Import Button is clicked, the following event handler is executed. First the uploaded Excel file is saved to a folder named Files and then it is opened and read using ClosedXml WorkBook class object.

Then the instance of the first Sheet is determined and all the rows present in the Sheet are fetched.

Finally a loop is executed over the fetched rows and a DataTable is populated which is then bound to the GridView.

C#

protected void ImportExcel(object sender, EventArgs e)

{

    //Save the uploaded Excel file.

    string filePath = Server.MapPath(«~/Files/») + Path.GetFileName(FileUpload1.PostedFile.FileName);

    FileUpload1.SaveAs(filePath);

    //Open the Excel file using ClosedXML.

    using (XLWorkbook workBook = new XLWorkbook(filePath))

    {

        //Read the first Sheet from Excel file.

        IXLWorksheet workSheet = workBook.Worksheet(1);

        //Create a new DataTable.

        DataTable dt = new DataTable();

        //Loop through the Worksheet rows.

        bool firstRow = true;

        foreach (IXLRow row in workSheet.Rows())

        {

            //Use the first row to add columns to DataTable.

            if (firstRow)

            {

                foreach (IXLCell cell in row.Cells())

                {

                    dt.Columns.Add(cell.Value.ToString());

                }

                firstRow = false;

            }

            else

            {

                //Add rows to DataTable.

                dt.Rows.Add();

                int i = 0;

                foreach (IXLCell cell in row.Cells())

                {

                    dt.Rows[dt.Rows.Count — 1][i] = cell.Value.ToString();

                    i++;

                }

            }

            GridView1.DataSource = dt;

            GridView1.DataBind();

        }

    }

}

VB.Net

Protected Sub ImportExcel(sender As Object, e As EventArgs)

    ‘Save the uploaded Excel file.

    Dim filePath As String = Server.MapPath(«~/Files/») + Path.GetFileName(FileUpload1.PostedFile.FileName)

    FileUpload1.SaveAs(filePath)

    ‘Open the Excel file using ClosedXML.

    Using workBook As New XLWorkbook(filePath)

        ‘Read the first Sheet from Excel file.

        Dim workSheet As IXLWorksheet = workBook.Worksheet(1)

        ‘Create a new DataTable.

        Dim dt As New DataTable()

        ‘Loop through the Worksheet rows.

        Dim firstRow As Boolean = True

        For Each row As IXLRow In workSheet.Rows()

            ‘Use the first row to add columns to DataTable.

            If firstRow Then

                For Each cell As IXLCell In row.Cells()

                    dt.Columns.Add(cell.Value.ToString())

                Next

                firstRow = False

            Else

                ‘Add rows to DataTable.

                dt.Rows.Add()

                Dim i As Integer = 0

                For Each cell As IXLCell In row.Cells()

                    dt.Rows(dt.Rows.Count — 1)(i) = cell.Value.ToString()

                    i += 1

                Next

            End If

            GridView1.DataSource = dt

            GridView1.DataBind()

        Next

    End Using

End Sub

Screenshots

The Excel File

Read and Import Excel data to DataTable using ClosedXml in ASP.Net with C# and VB.Net

GridView displaying Excel data

Read and Import Excel data to DataTable using ClosedXml in ASP.Net with C# and VB.Net

Downloads

Понравилась статья? Поделить с друзьями:
  • Vb for excel запустить
  • Vaygren word from the battlefield
  • Vast meaning of the word
  • Vars excel по русски
  • Various uses of the word up