重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

vb.net中输出到表格 vb如何在列表框输出

vb.net中从DataGridView里面把数据导出到excel中

以下是我以前百度找的资料 希望对你有用 你读取DataGridView到DataGrid然后直接调用函数即可

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、温县网络推广、微信小程序开发、温县网络营销、温县企业策划、温县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供温县建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

Public Function ExportXLsD(ByVal datagrid As DataGrid) ', ByVal Title As String)

'Dim Mytable As New DataTable

'Mytable = CType(datagrid.DataSource, DataTable)

If mytable Is Nothing Then

MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

Exit Function

End If

If mytable.Rows.Count 0 Then

Dim MyFileName As String

Dim FileName As String

With SaveFileDialog1

.AddExtension = True '如果用户忘记添加扩展名,将自动家上

.DefaultExt = "xls" '默认扩展名

.Filter = "Excel文件(*.xls)|*.xls"

.Title = "文件保存到"

If .ShowDialog = DialogResult.OK Then

FileName = .FileName

End If

End With

MyFileName = Microsoft.VisualBasic.Right(FileName, 4)

If MyFileName = "" Then

Exit Function

End If

If MyFileName = ".xls" Or MyFileName = ".XLS" Then

Dim FS As FileStream = New FileStream(FileName, FileMode.Create)

Dim sw As StreamWriter = New StreamWriter(FS, System.Text.Encoding.Default)

sw.WriteLine(vbTab FileName vbTab Date.Now)

Dim i, j As Integer

Dim str As String = ""

For i = 0 To mytable.Columns.Count - 1

str = mytable.Columns(i).Caption

sw.Write(str vbTab)

Next

sw.Write(vbCrLf)

For j = 0 To mytable.Rows.Count - 1

For i = 0 To mytable.Columns.Count - 1

Dim strColName, strRow As String

strRow = IIf(mytable.Rows(j).Item(i) Is DBNull.Value, "", mytable.Rows(j).Item(i))

sw.Write(strRow vbTab)

Next

sw.Write(vbLf)

Next

sw.Close()

FS.Close()

MessageBox.Show("数据导出成功!", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

Exit Function

End If

Else

MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

End Function

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

Dim saveExcel As SaveFileDialog

saveExcel = New SaveFileDialog

saveExcel.Filter = "Excel文件(.xls)|*.xls"

Dim filename As String

If saveExcel.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub

filename = saveExcel.FileName

Dim excel As Excel.Application

excel = New Excel.Application

excel.DisplayAlerts = False

excel.Workbooks.Add(True)

excel.Visible = False

Dim i As Integer

For i = 0 To DataGridView1.Columns.Count - 1

excel.Cells(1, i + 1) = DataGridView1.Columns(i).HeaderText

Next

'设置标题

Dim j As Integer

For i = 0 To DataGridView1.Rows.Count - 1 '填充数据

For j = 0 To DataGridView1.Columns.Count - 1

excel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value

Next

Next

excel.Workbooks(1).SaveCopyAs(filename) '保存

Me.Close()

End Sub

利用VB.NET实现导出DataTable数据到excel中,各位大侠帮帮忙,最好有源码,谢谢,江湖救急

刚好写了个Helper类,你试验一下DataTable2Exce(这个方法代码如下:

Imports System.IO

Imports System.Data

Imports System.Data.OleDb

Public MustInherit Class ExcelHelper

Private Shared Function buildConnStr(excelFilePath As String) As String

Dim excelFileInfo As New System.IO.FileInfo(excelFilePath)

Dim constr As String

If excelFileInfo.Extension = ".xlsx" Then

constr = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'", excelFilePath)

Else

constr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", excelFilePath)

End If

Return constr

End Function

'将datatable导入到excel

Public Shared Function DataTable2Excel(dt As DataTable, excelFilePath As String) As Boolean

If File.Exists(excelFilePath) Then

Throw New Exception("该文件已经存在!")

End If

If dt.TableName.Trim.Length = 0 Or dt.TableName.ToLower = "table" Then

dt.TableName = "Sheet1"

End If

Dim colCount As Integer = dt.Columns.Count

Dim pa(colCount - 1) As OleDb.OleDbParameter

Dim tableStructStr As String = "Create Table " dt.TableName "("

Dim connString As String = buildConnStr(excelFilePath)

Dim objconn As New OleDbConnection(connString)

Dim objcmd As New OleDbCommand

objcmd.Connection = objconn

Dim dataTypeList As New ArrayList

dataTypeList.Add("System.Decimal")

dataTypeList.Add("System.Double")

dataTypeList.Add("System.Int16")

dataTypeList.Add("System.Int32")

dataTypeList.Add("System.Int64")

dataTypeList.Add("System.Single")

Dim i As Integer = 0

For Each col As DataColumn In dt.Columns

If dataTypeList.IndexOf(col.GetType.ToString) 0 Then

pa(i) = New OleDbParameter("@" col.ColumnName, OleDbType.Double)

objcmd.Parameters.Add(pa(i))

If i + 1 = colCount Then

tableStructStr += col.ColumnName + " double)"

Else

tableStructStr += col.ColumnName + " double,"

End If

Else

pa(i) = New OleDbParameter("@" col.ColumnName, OleDbType.VarChar)

objcmd.Parameters.Add(pa(i))

If i + 1 = colCount Then

tableStructStr += col.ColumnName + " VarChar)"

Else

tableStructStr += col.ColumnName + " VarChar,"

End If

End If

i += 1

Next

Try

objcmd.CommandText = tableStructStr

If objconn.State = ConnectionState.Closed Then objconn.Open()

objcmd.ExecuteNonQuery()

Catch ex As Exception

Throw ex

End Try

Dim InsertSql_1 As String = "Insert into " + dt.TableName + " ("

Dim InsertSql_2 As String = " Values ("

Dim InsertSql As String = ""

For colID As Integer = 0 To colCount - 1 Step 1

If colID + 1 = colCount Then

InsertSql_1 += dt.Columns(colID).ColumnName ")"

InsertSql_2 += "@" + dt.Columns(colID).ColumnName + ")"

Else

InsertSql_1 += dt.Columns(colID).ColumnName + ","

InsertSql_2 += "@" + dt.Columns(colID).ColumnName + ","

End If

Next

InsertSql = InsertSql_1 + InsertSql_2

For rowID As Integer = 0 To dt.Rows.Count - 1 Step 1

For colID = 0 To dt.Columns.Count - 1

If pa(colID).DbType = DbType.Double And dt.Rows(rowID)(colID).ToString.Trim = "" Then

pa(colID).Value = 0

Else

pa(colID).Value = dt.Rows(rowID)(colID).ToString.Trim

End If

Next

Try

objcmd.CommandText = InsertSql

objcmd.ExecuteNonQuery()

Catch ex As Exception

Throw ex

End Try

Next

Try

If objconn.State = ConnectionState.Open Then objconn.Close()

Catch exp As Exception

Throw exp

End Try

Return True

End Function

' 获取Excel文件数据表列表Sheets

Public Shared Function GetExcelTables(ExcelFileName As String) As ArrayList

'Dim sheets As New List(Of String)

'conn.Open()

'Dim dt As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)

'For Each r In dt.Rows

' sheets.Add(r("TABLE_NAME"))

'Next

'conn.Close()

'Return sheets

Dim dt As DataTable

If Not File.Exists(ExcelFileName) Then

Throw New Exception("指定的Excel文件不存在")

Return Nothing

End If

Dim tableList As New ArrayList

Using conn As OleDbConnection = New OleDbConnection(buildConnStr(ExcelFileName))

Try

conn.Open()

dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})

Catch ex As Exception

Throw ex

End Try

For i As Integer = 0 To dt.Rows.Count - 1

Dim tableName As String = dt.Rows(i)(2).ToString.Trim.TrimEnd("$")

If tableList.IndexOf(tableName) 0 Then tableList.Add(tableName)

Next

End Using

Return tableList

End Function

'将Excel文件导出至DataTable(第一行作为表头)

Public Shared Function InputFromExcel(ExcelFileName As String, TableName As String) As DataTable

If Not File.Exists(ExcelFileName) Then

Throw New Exception("指定的Excel文件不存在")

End If

Dim tableList As ArrayList = GetExcelTables(ExcelFileName)

If tableList.IndexOf(TableName) 0 Then

TableName = tableList(0).ToString.Trim

End If

Dim dt As New DataTable

Dim conn As New OleDbConnection(buildConnStr(ExcelFileName))

Dim cmd As New OleDbCommand("select * from [" TableName "$]", conn) '调试是否需要$

Dim adapter As New OleDbDataAdapter(cmd)

Try

If conn.State = ConnectionState.Closed Then conn.Open()

adapter.Fill(dt)

Catch ex As Exception

Throw ex

Finally

If conn.State = ConnectionState.Open Then conn.Close()

End Try

Return dt

End Function

'查询excel文件中的一个数据

Public Shared Function ReadOneDataFromExcel(ExcelFileName As String, TableName As String, sql As String) As Object

If Not File.Exists(ExcelFileName) Then

Throw New Exception("指定的Excel文件不存在")

End If

Dim tableList As ArrayList = GetExcelTables(ExcelFileName)

If tableList.IndexOf(TableName) 0 Then

TableName = tableList(0).ToString.Trim

End If

Dim dt As New DataTable

Dim conn As New OleDbConnection(buildConnStr(ExcelFileName))

Dim cmd As New OleDbCommand(sql, conn) '调试是否需要$

Dim ret As Object

Try

If conn.State = ConnectionState.Closed Then conn.Open()

ret = cmd.ExecuteScalar()

Catch ex As Exception

Throw ex

Finally

If conn.State = ConnectionState.Open Then conn.Close()

End Try

Return ret

End Function

'获取Excel文件指定数据表的数据列表columnNames

Public Shared Function GetExcelTableColumns(ExcelFileName As String, TableName As String) As ArrayList

Dim dt As DataTable

If Not File.Exists(ExcelFileName) Then

Throw New Exception("指定的Excel文件不存在")

Return Nothing

End If

Dim ColList As New ArrayList

Using conn As OleDbConnection = New OleDbConnection(buildConnStr(ExcelFileName))

Try

conn.Open()

dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, New Object() {Nothing, Nothing, TableName, Nothing})

Catch ex As Exception

Throw ex

End Try

For i As Integer = 0 To dt.Rows.Count - 1

Dim ColName = dt.Rows(i)("Column_Name").ToString().Trim()

ColList.Add(ColName)

Next

End Using

Return ColList

End Function

End Class

VB.NET怎么将DataGridview里的内容导出到EXCEL去

不好意思 现在才看到;Private Sub 导出EXCEL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim xlApp, xlBook, xlSheet As Object

xlapp = CreateObject("Excel.Application")

xlbook = xlapp.Workbooks.Add

xlsheet = xlbook.Worksheets(1)

'Dim xlapp As New Excel.Application

'Dim xlbook As Excel.Workbook

'Dim xlsheet As Excel.Worksheet

Dim rowindex, colindex As Integer rowindex = 1 '行

colindex = 0 '列

'xlbook = xlapp.Workbooks.Open("c:\EXCEL.xls") '打开EXCEL文件

xlsheet = xlapp.Worksheets("sheet1") '打开sheet1那页 Dim a As New DataSet

Dim table As New System.Data.DataTable table = DataSet11.Tables("INVMATLISTA") '填充表 Dim row As DataRow '定义row为表格的行

Dim col As DataColumn '定义col为表格的列 '把表格的每一列写到EXCEL去

For Each col In table.Columns

colindex = colindex + 1

xlapp.Cells(1, colindex) = col.ColumnName Next

'把表格的每一行写到EXCEL去

For Each row In table.Rows

rowindex = rowindex + 1

colindex = 0

For Each col In table.Columns

colindex = colindex + 1

xlapp.Cells(rowindex, colindex) = row(col.ColumnName)

Next

Next

xlapp.Visible = True

End Sub 前提要先引用一个Microsoft.Office.Interop.Excel.dll然后在最上面先输入Imports Microsoft.Office.Interop; 就可以了

在VB.net中,如何使几个数组变量按照列表示出来,并输出到指定的EXCEL表格中!

先在: My Project 中引用 Microsoft Excel 11.0 Object Library(这个是Excel 2003,Excel 2007 是12.0),之后在窗体代码中加入相关内容就行了。以下是一个窗体的简单实例

假设在C盘根文件夹中有:TEST.xls

Public Class 引用EXCEL窗体

Private A() As String = {"A", "B", "CC", "C", "D"}

Private B() As Integer = {1, 22, 34, 50, 16, 99, 14}

Private excelapp As New Microsoft.Office.Interop.Excel.Application

Private excelworkbook As Microsoft.Office.Interop.Excel.Workbook

Private Sub 引用EXCEL_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim Index As Integer

excelworkbook = excelapp.Workbooks.Open("c:\test.xls")

excelapp.Application.Workbooks.Add(True)

excelapp.Cells(1, 1) = "数组:A"

For Index = 0 To UBound(A)

excelapp.Cells(Index + 2, 1) = A(Index)

Next

excelapp.Cells(1, 2) = "数组:B"

For Index = 0 To UBound(B)

excelapp.Cells(Index + 2, 2) = B(Index)

Next

excelapp.Visible = True

End Sub

End Class

运行结果:

数组:A 数组:B

A 1

B 22

CC 34

C 50

D 16

99

14

vb.net中 导出excel表格代码怎么写

private void ExportExcelFromDataGrid

( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )

...{

Response.Clear();

Response.Buffer= true;

Response.Charset="utf-8";

Response.AppendHeader ("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );

Response.ContentEncoding=System.Text.Encoding.Default;//设置输出流为简体中文

Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。

this.EnableViewState = false;

System.Globalization.CultureInfo myCItrad =

new System.Globalization.CultureInfo("ZH-CN",true);

System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);

System.Web.UI.HtmlTextWriter oHtmlTextWriter =

new System.Web.UI.HtmlTextWriter(oStringWriter);

ToExcelGrid.RenderControl(oHtmlTextWriter);

Response.Write(oStringWriter.ToString());

Response.End();

}

private void Button4_Click(object sender, System.EventArgs e)

...{

this.Panel1.Visible = false;

string filename = "内训师.xls";

this.DataGrid1.Columns[6].Visible = true;

this.DataGrid1.Columns[7].Visible = true;

this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false; // *

this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false; // *

this.DataGrid1.AllowSorting = false; // *

this.DataGrid1.AllowPaging = false;

this.DataGrid1.SelectedIndex = -1; // *

this.BindGrid();

this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );

}

}

原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。

很多网上的朋友使用了以上这种可粘贴性强的代码,发现不好用,反映的错误类似:

“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:

问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。

我认为,这种回答是很不准确的,理由如下:

通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。 报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。 其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。

当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。

言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。

同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。

其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了

vb.net dataGridView中的数据导出为excel表2010-03-01 15:03在form1窗体里添加一个dataGridView1(根据自己是使用情况要给他命名,符合命名规范哟。)在添加一个Button1(命名)。记着,dataGridView的属性里有一个allowUsersToAddRows,要设置成FALSE。否则会发生一个错误,当然错误是什么你自己试一下就ok了。

还有一点要注意:因为你要用到excel表,所以要首先在项目里添加引用哟:项目(project)-添加引用(add reference)-Microsoft .Office.Interop.Excel

Button1的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'要先添加引用才能用到 Microsoft.Office.Interop.Excel.Application()

Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()

MyExcel.Application.Workbooks.Add(True)

MyExcel.Visible = True

'去除dataGridView1的编号列(这里也可以不要)

Dim m As Integer

For m = 0 To DataGridView1.ColumnCount - 1

MyExcel.Cells(1, m + 1) = Me.DataGridView1.Columns(m).HeaderText

Next m

'往excel表里添加数据

Dim i As Integer

For i = 0 To DataGridView1.RowCount - 1

Dim j As Integer

For j = 0 To DataGridView1.ColumnCount - 1

If Me.DataGridView1(j, i).Value Is System.DBNull.Value Then

MyExcel.Cells(i + 2, j + 1) = ""

Else

MyExcel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString

End If

Next j

Next i

End Sub

VB.NET输出到Excel的问题

一、DCOM修复

1.运行:mmc comexp.msc /32,找到我的电脑 - DCom配置中的Microsoft Excel Application

2.在Microsoft Excel Application上点击右键,选择"属性"

3.点击"标识"标签,选择"交互式用户"

4.点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

5.依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.

二、如果找不到Microsoft Excel 应用程序

1、进行OFFICE菜单中的组件重注册

2、如果仍未解决问题,点 开始--运行--输入EXCEL文件所在的路径 “c:\program files\exel.exe” /regserver 进行修复注册

参考:


标题名称:vb.net中输出到表格 vb如何在列表框输出
网页地址:http://cqcxhl.com/article/hpcsjs.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP