11 / 11 / 2 Регистрация: 17.02.2011 Сообщений: 145 |
|
1 |
|
22.11.2011, 14:56. Показов 52941. Ответов 24
Доброго времени суток.
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 |
|||
Сообщение было отмечено Памирыч как решение Решение
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 далее:
итог: имеешь экземпляр экселя в переменной _excel и экземпляр книги _workbook. Делай с ними что хошь.
активирует лист за номером 2 в книге. Еще: в самом начале мы добавили ссылку на библу экселя. Это называется «раннее связывание».
если эксель запущен, можно подхватить активный экземпляр
или, если фрагмент выше в итоге останется nothing, можно создать новый
далее так же как и по первому примеру. Только нужно хорошо знать объектную модель экселя: члены не будут видны при написании кода.
4 |
am-wrag 11 / 11 / 2 Регистрация: 17.02.2011 Сообщений: 145 |
||||
24.11.2011, 14:48 [ТС] |
7 |
|||
1)Добавляем в референцы ссылку на Microsoft Excel 11 object library Обьясни как.
А здесь что именно писать? Добавлено через 6 минут Добавлено через 6 минут
0 |
Почетный модератор 21371 / 9105 / 1082 Регистрация: 11.04.2010 Сообщений: 11,014 |
|
24.11.2011, 14:58 |
8 |
не применим для стартового изучения Согласен, но я отказался от библ, уж больно их не охота таскать за прогой.
0 |
am-wrag 11 / 11 / 2 Регистрация: 17.02.2011 Сообщений: 145 |
||||
24.11.2011, 17:27 [ТС] |
9 |
|||
Обьясните плиз чем отличаются обьекты
Допустим просто Worksheet совершенно не подходит для работы, у него совершенно отсутвуют параметры в отличие от такогоже но с _
0 |
1706 / 1194 / 227 Регистрация: 23.12.2010 Сообщений: 1,526 |
|
24.11.2011, 17:52 |
10 |
меня Microsoft Excel 14 object library это у тебя просо офис поновее. Кажется 2010.
Согласен, но я отказался от библ, уж больно их не охота таскать за прогой В данном случае и не надо таскать библу экселя с собой. Для этого в референцах параметр «копировать локально» ставим в false и все, библа не будет добавляться в пакет установки. А работать даже перетащенная, она без установленного экселя все равно не будет. Так что на конечной машине наличие экселя — обязательно.
Насчет стартового изучения — полностью за Конечно, но можно пойти на хитрость:
2 |
am-wrag 11 / 11 / 2 Регистрация: 17.02.2011 Сообщений: 145 |
||||
28.11.2011, 16:27 [ТС] |
11 |
|||
Почемуто после каждого сохраниения в процессах остается событие EXCEL.EXE, которое продолжает множится при последующих сохранениях.
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 |
|||
попробуй сделать после всего
потому как хоть ты эксель и закрыл, но переменная осталась.
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 |
|||
Работа такого кода представлена на скрине, в ходе работы программы не было ни одной ошибки:
Миниатюры
5 |
am-wrag 11 / 11 / 2 Регистрация: 17.02.2011 Сообщений: 145 |
||||||||||||
29.11.2011, 12:47 [ТС] |
16 |
|||||||||||
Вот мои проекты, вроде отличий минимум… Код загрузки информации в лист бокс работает прекрасно(если не брать в расчет лишних процессoв). Код сохранения не сохраняет, ума не приложу почему… Код сохранения
Код загрузки
Добавлено через 1 час 48 минут
1 |
ctac1412 18 / 18 / 2 Регистрация: 12.02.2013 Сообщений: 387 |
||||||||
12.04.2016, 12:44 |
17 |
|||||||
Памирыч, Добрый день! Очень мало инфы по exel для неопытных пользователей в интернете. Если не затрудник, не могли бы взглянуть на проблему?
Добавлено через 37 минут
Автор 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, остающиеся в системе.
Только вот этого кода почему-то было недостаточно.
ctac1412, Спасибо!
0 |
174 / 64 / 13 Регистрация: 22.12.2015 Сообщений: 2,648 |
|
06.12.2016, 11:09 |
20 |
Exc.Rows(7).Insert(Shift:=-4121) а это для чего?
0 |
Previously , I was trying to export gridview value into excel. but with the code given below i am able to export data into excel. but still not able to Save Automatically that excel file into a fixed folder suppose in C:/ drive. The code which i have written to export into excel is given below.
Private Sub ButtonExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonExport.Click
Dim rowsTotal, colsTotal As Short
Dim I, j, iC As Short
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
Dim xlApp As New Excel.Application
Try
Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
xlApp.Visible = True
rowsTotal = DataGridView1.RowCount - 1
colsTotal = DataGridView1.Columns.Count - 1
With excelWorksheet
.Cells.Select()
.Cells.Delete()
For iC = 0 To colsTotal
.Cells(1, iC + 1).Value = DataGridView1.Columns(iC).HeaderText
Next
For I = 0 To rowsTotal - 1
For j = 0 To colsTotal
.Cells(I + 2, j + 1).value = DataGrid1.Rows(I).Cells(j).Value
Next j
Next I
.Rows("1:1").Font.FontStyle = "Bold"
.Rows("1:1").Font.Size = 10
.Cells.Columns.AutoFit()
.Cells.Select()
.Cells.EntireColumn.AutoFit()
.Cells(1, 1).Select()
End With
Catch ex As Exception
MsgBox("Export Excel Error " & ex.Message)
Finally
'RELEASE ALLOACTED RESOURCES
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
xlApp = Nothing
End Try
End Sub
can anybody over here please help me out from this problem that how to save that excel file automatically in VB.NET??
asked May 14, 2013 at 6:19
4
The SaveAs method is defined for Excel.Workbook
At the end of your Try
, just before the Catch
, write :
excelBook.SaveAs(<some path here>, etc...)
Refers to here for more informations.
And to exit properly Excel, write in your Finally
block at the start :
xlApp.Workbooks.Close()
xlApp.Quit()
answered May 14, 2013 at 6:40
Adrien LacroixAdrien Lacroix
3,4721 gold badge19 silver badges23 bronze badges
16
i just used :
Dim oexcel As Object
Dim obook As Object
Dim owrite As New Microsoft.Office.Interop.Excel.Worksheet
< your code >
owrite.SaveAs("c:" & foldername)
answered May 7, 2014 at 15:25
This is an older question but maybe this’ll help someone still.
I recently needed to read, parse and write xlsx files. I used the OpenXML SDK with C# for this purpose. MSDN provides some good tutorials on how to do this.
If anyone has questions I can provide my code.
Just one last note…when I «published» the app an installation of the SDK on the client’s computer seemed to be required.
answered Jan 9, 2017 at 7:51
marcusmarcus
1381 gold badge1 silver badge8 bronze badges
- Download source code — 450.5 KB
Introduction
Exporting data to Excel of Microsoft Office is currently needed. But many of them used very complicated coding for simple export either from Datagrid
or DataTable
. I used simple Dataset
to export the data.
Background
Introducing the way of sending data from datagrid
or by Datatable
. I used Dataset
which is easy to use. But for code optimization, dataset
is not advisable compared to Reader
and DataTable
.
Using the Code
Currently, available code for exporting the data to Excel are given which is so complete and not straight forward because they used the Datagrid
and DataTable
which are given below:
From DataTable to Excel sheet:
Dim dt1 As New DataTable Dim I1, J1 As Integer For I1 = 0 To dsmas1.Tables(0).Columns.Count - 1 dt1.Columns.Add(dsmas1.Tables(0).Columns(I1).ColumnName) Next For I1 = 0 To dsmas1.Tables(0).Rows.Count - 1 Dim DR As DataRow = Nothing DR = dt1.NewRow For J1 = 0 To dsmas1.Tables(0).Columns.Count - 1 DR.Item(J1) = dsmas1.Tables(0).Rows(I1).ItemArray(J1) Next dt1.Rows.Add(DR) Next rel_ds.Tables.Add(dt1) Dim dt As New DataTable Dim I, J As Integer For I = 0 To dschd1.Tables(0).Columns.Count - 1 dt.Columns.Add(dschd1.Tables(0).Columns(I).ColumnName) Next For I = 0 To dschd1.Tables(0).Rows.Count - 1 Dim DR As DataRow = Nothing DR = dt.NewRow For J = 0 To dschd1.Tables(0).Columns.Count - 1 DR.Item(J) = dschd1.Tables(0).Rows(I).ItemArray(J) Next dt.Rows.Add(DR) Next rel_ds.Tables.Add(dt)
For DataGrid to Excel sheet:
If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then Exit Sub End If Dim dset As New DataSet dset.Tables.Add() For i As Integer = 0 To DataGridView1.ColumnCount - 1 dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText) Next Dim dr1 As DataRow For i As Integer = 0 To DataGridView1.RowCount - 1 dr1 = dset.Tables(0).NewRow For j As Integer = 0 To DataGridView1.Columns.Count - 1 dr1(j) = DataGridView1.Rows(i).Cells(j).Value Next dset.Tables(0).Rows.Add(dr1) Next Dim excel As New Microsoft.Office.Interop.Excel.ApplicationClass Dim wBook As Microsoft.Office.Interop.Excel.Workbook Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet wBook = excel.Workbooks.Add() wSheet = wBook.ActiveSheet() Dim dt As System.Data.DataTable = dset.Tables(0) Dim dc As System.Data.DataColumn Dim dr As System.Data.DataRow Dim colIndex As Integer = 0 Dim rowIndex As Integer = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(1, colIndex) = dc.ColumnName Next For Each dr In dt.Rows rowIndex = rowIndex + 1 colIndex = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName) Next Next wSheet.Columns.AutoFit() Dim strFileName As String = "D:ss.xls" Dim blnFileOpen As Boolean = False Try Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName) fileTemp.Close() Catch ex As Exception blnFileOpen = False End Try If System.IO.File.Exists(strFileName) Then System.IO.File.Delete(strFileName) End If wBook.SaveAs(strFileName) excel.Workbooks.Open(strFileName) excel.Visible = True
But I used only Dataset to Excel sheet.
In code, I used a user defined function called «Load_Excel_Details()
» in which I used an old technique like create Object for Excel, add the Book for a sheet and sheet for the data.
i.e,.
- Excel <—
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
- Book <——
Excel Workbooks.Add()
- Sheet <——
Excel SheetsInNewWorkbook = 1
- Data <——
Excel cells(1, i).value
- Data <——
- Sheet <——
- Book <——
which is used in the code like given below:
With Excel .SheetsInNewWorkbook = 1 .Workbooks.Add() .Worksheets(1).Select() Dim i As Integer = 1 For col = 0 To ComDset.Tables(0).Columns.Count - 1 .cells(1, i).value = ComDset.Tables(0).Columns(col).ColumnName .cells(1, i).EntireRow.Font.Bold = True i += 1 Next i = 2 Dim k As Integer = 1 For col = 0 To ComDset.Tables(0).Columns.Count - 1 i = 2 For row = 0 To ComDset.Tables(0).Rows.Count - 1 .Cells(i, k).Value = ComDset.Tables(0).Rows(row).ItemArray(col) i += 1 Next k += 1 Next filename = "c:File_Exported.xls" .ActiveCell.Worksheet.SaveAs(filename) End With
Points of Interest
I used simple For
loops…. and insert the values by Rows, Columns and Cells formats.
History
I proposed this after I used it in my company project which was appreciate by the customers.
Hello,
This is Senthil.S. I am a Software Engineer at TCS. I am Currently Standing on .Net and Flex Platform.
- Download source code — 450.5 KB
Introduction
Exporting data to Excel of Microsoft Office is currently needed. But many of them used very complicated coding for simple export either from Datagrid
or DataTable
. I used simple Dataset
to export the data.
Background
Introducing the way of sending data from datagrid
or by Datatable
. I used Dataset
which is easy to use. But for code optimization, dataset
is not advisable compared to Reader
and DataTable
.
Using the Code
Currently, available code for exporting the data to Excel are given which is so complete and not straight forward because they used the Datagrid
and DataTable
which are given below:
From DataTable to Excel sheet:
Dim dt1 As New DataTable Dim I1, J1 As Integer For I1 = 0 To dsmas1.Tables(0).Columns.Count - 1 dt1.Columns.Add(dsmas1.Tables(0).Columns(I1).ColumnName) Next For I1 = 0 To dsmas1.Tables(0).Rows.Count - 1 Dim DR As DataRow = Nothing DR = dt1.NewRow For J1 = 0 To dsmas1.Tables(0).Columns.Count - 1 DR.Item(J1) = dsmas1.Tables(0).Rows(I1).ItemArray(J1) Next dt1.Rows.Add(DR) Next rel_ds.Tables.Add(dt1) Dim dt As New DataTable Dim I, J As Integer For I = 0 To dschd1.Tables(0).Columns.Count - 1 dt.Columns.Add(dschd1.Tables(0).Columns(I).ColumnName) Next For I = 0 To dschd1.Tables(0).Rows.Count - 1 Dim DR As DataRow = Nothing DR = dt.NewRow For J = 0 To dschd1.Tables(0).Columns.Count - 1 DR.Item(J) = dschd1.Tables(0).Rows(I).ItemArray(J) Next dt.Rows.Add(DR) Next rel_ds.Tables.Add(dt)
For DataGrid to Excel sheet:
If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then Exit Sub End If Dim dset As New DataSet dset.Tables.Add() For i As Integer = 0 To DataGridView1.ColumnCount - 1 dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText) Next Dim dr1 As DataRow For i As Integer = 0 To DataGridView1.RowCount - 1 dr1 = dset.Tables(0).NewRow For j As Integer = 0 To DataGridView1.Columns.Count - 1 dr1(j) = DataGridView1.Rows(i).Cells(j).Value Next dset.Tables(0).Rows.Add(dr1) Next Dim excel As New Microsoft.Office.Interop.Excel.ApplicationClass Dim wBook As Microsoft.Office.Interop.Excel.Workbook Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet wBook = excel.Workbooks.Add() wSheet = wBook.ActiveSheet() Dim dt As System.Data.DataTable = dset.Tables(0) Dim dc As System.Data.DataColumn Dim dr As System.Data.DataRow Dim colIndex As Integer = 0 Dim rowIndex As Integer = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(1, colIndex) = dc.ColumnName Next For Each dr In dt.Rows rowIndex = rowIndex + 1 colIndex = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName) Next Next wSheet.Columns.AutoFit() Dim strFileName As String = "D:ss.xls" Dim blnFileOpen As Boolean = False Try Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName) fileTemp.Close() Catch ex As Exception blnFileOpen = False End Try If System.IO.File.Exists(strFileName) Then System.IO.File.Delete(strFileName) End If wBook.SaveAs(strFileName) excel.Workbooks.Open(strFileName) excel.Visible = True
But I used only Dataset to Excel sheet.
In code, I used a user defined function called «Load_Excel_Details()
» in which I used an old technique like create Object for Excel, add the Book for a sheet and sheet for the data.
i.e,.
- Excel <—
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
- Book <——
Excel Workbooks.Add()
- Sheet <——
Excel SheetsInNewWorkbook = 1
- Data <——
Excel cells(1, i).value
- Data <——
- Sheet <——
- Book <——
which is used in the code like given below:
With Excel .SheetsInNewWorkbook = 1 .Workbooks.Add() .Worksheets(1).Select() Dim i As Integer = 1 For col = 0 To ComDset.Tables(0).Columns.Count - 1 .cells(1, i).value = ComDset.Tables(0).Columns(col).ColumnName .cells(1, i).EntireRow.Font.Bold = True i += 1 Next i = 2 Dim k As Integer = 1 For col = 0 To ComDset.Tables(0).Columns.Count - 1 i = 2 For row = 0 To ComDset.Tables(0).Rows.Count - 1 .Cells(i, k).Value = ComDset.Tables(0).Rows(row).ItemArray(col) i += 1 Next k += 1 Next filename = "c:File_Exported.xls" .ActiveCell.Worksheet.SaveAs(filename) End With
Points of Interest
I used simple For
loops…. and insert the values by Rows, Columns and Cells formats.
History
I proposed this after I used it in my company project which was appreciate by the customers.
Hello,
This is Senthil.S. I am a Software Engineer at TCS. I am Currently Standing on .Net and Flex Platform.
- Remove From My Forums
-
Question
-
how can i save data from textboxes to excel file .. and the data from columns of datagridview to excel file …
thanks in advance
Answers
-
Hello,
There are several methods to read/write to Excel via Excel automation to OleDb. The following link is for an example using OleDb done in VS2010. Please note that normally when updating data we would have a primary key to reference in an SQL where clause
which most cases we don’t have in a worksheet as with the sample project so keep that in mind.http://kevininstructor.home.comcast.net/~kevininstructor/DotNet/WithDataAdapter_1.zip
The following link shows many common operations including writing to Excel via Office automation. There is a great deal more code as I make sure all memory is properly released where many Excel code examples fail to do this.
http://code.msdn.microsoft.com/Basics-of-using-Excel-4453945d
KSG
-
Marked as answer by
Monday, December 17, 2012 6:04 AM
-
Marked as answer by