vb点虐 表格参数导出 vb数据库导出excel

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

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

西区ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

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点虐 和excel数据导入导出的问题,主要是导出!!

可以参考下面这段代码,把数据集的值换成文本框中的值就行,应该能走通:

Dim myExcel As Excel.Application = New Excel.Application

myExcel.Application.Workbooks.Add(True)

myExcel.Application.Worksheets(1).name = "产品列表(" + Me.UcClassTree1.m_CurrentClassName + ")"

myExcel.Visible = True

myExcel.ActiveWorkbook.Styles("常规").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter '**此属性取决于安装字体!!!

myExcel.Range("A1").Value = "图号"

myExcel.Range("B1").Value = "名称"

myExcel.Range("C1").Value = "所属产品号"

myExcel.Range("D1").Value = "规格"

myExcel.Range("E1").Value = "是否总成"

myExcel.Range("F1").Value = "版本"

myExcel.Range("G1").Value = "状态"

myExcel.Range("H1").Value = "加工方式"

myExcel.Range("I1").Value = "创建者"

myExcel.Range("J1").Value = "创建时间"

If Me.UcObjectList1.gridObjects.Rows.Count Then

For i As Int16 = 0 To UcObjectList1.gridObjects.Rows.Count - 1

myExcel.Range("A" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells(Me._ObjectExpression).Value.ToString

myExcel.Range("B" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("ObjectName").Value.ToString

myExcel.Range("C" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("ObjectCode").Value.ToString

myExcel.Range("D" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("Spec").Value.ToString

myExcel.Range("E" + (i + 2).ToString).Value = "'" + IIf(CBool(UcObjectList1.gridObjects.Rows(i).Cells("HasBom").Value.ToString), "是", "否") '前台不能true,false

myExcel.Range("F" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("Version").Value.ToString

myExcel.Range("G" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("State").Value.ToString

myExcel.Range("H" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("mType").Value.ToString

myExcel.Range("I" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("CreateUser").Value.ToString

myExcel.Range("J" + (i + 2).ToString).Value = "'" + UcObjectList1.gridObjects.Rows(i).Cells("CreateTime").Value.ToString

Next

End If

vb点虐 中从DataGridView里面把数据导出到excel中

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

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中如何将数据导出到excel

介绍

下面通过一步一步的介绍,如何通过VB.NET来读取数据,并且将数据导入到Excel中。

第一步:

打开VS开发工具,并且添加引用。

然后选择。

Microsoft Excel 12.0 object library and。

Microsoft Excel 14.0 object library。

第二步:

创建一个Excle在你的电脑中。

第三步:

在VS中写入如下代码:

Imports System.Data

Imports System.Data.SqlClient

Imports Excel = Microsoft.Office.Interop.Excel。

Public Class excel

‘添加按钮

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

  Handles Button1.Click

Try

    '创建连接

    Dim cnn As DataAccess = New DataAccess(CONNECTION_STRING)

    

    Dim i, j As Integer

    '创建Excel对象

    Dim xlApp As Microsoft.Office.Interop.Excel.Application

    Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook

    Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet

    Dim misValue As Object = System.Reflection.Missing.Value

    xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass

    xlWorkBook = xlApp.Workbooks.Add(misValue)

    ' 打开某一个表单

    xlWorkSheet = xlWorkBook.Sheets("sheet1")

    ' sql查询

    '  xlWorkBook.Sheets.Select("A1:A2")

    Dim sql As String = "SELECT * FROM EMP"

    ' SqlAdapter

    Dim dscmd As New SqlDataAdapter(sql, cnn.ConnectionString)

    ' 定义数据集

    Dim ds As New DataSet

    dscmd.Fill(ds)

     ‘添加字段信息到Excel表的第一行

    xlWorkSheet.Cells(1, 1).Value = "First Name"

    xlWorkSheet.Cells(1, 2).Value = "Last Name"

    xlWorkSheet.Cells(1, 3).Value = "Full Name"

    xlWorkSheet.Cells(1, 4).Value = "Salary"

    ' 将数据导入到excel

      For i = 0 To ds.Tables(0).Rows.Count - 1

        'Column

        For j = 0 To ds.Tables(0).Columns.Count - 1

            ' this i change to header line cells

            xlWorkSheet.Cells(i + 3, j + 1) = _

            ds.Tables(0).Rows(i).Item(j)

        Next

    Next

    'HardCode in Excel sheet

    ' this i change to footer line cells  

   xlWorkSheet.Cells(i + 3, 7) = "Total"

    xlWorkSheet.Cells.Item(i + 3, 8) = "=SUM(H2:H18)"

    ' 保存到Excel

    xlWorkSheet.SaveAs("D:\vbexcel.xlsx")

    xlWorkBook.Close()

    xlApp.Quit()

    releaseObject(xlApp)

    releaseObject(xlWorkBook)

    releaseObject(xlWorkSheet)

    '弹出对话框显示保存后的路径

    MsgBox("You can find the file D:\vbexcel.xlsx")

Catch ex As Exception

End Try

End Sub

' Function of Realease Object in Excel Sheet

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

复制代码。

第四步:

看到如下导出结果。


当前标题:vb点虐 表格参数导出 vb数据库导出excel
浏览地址:http://myzitong.com/article/ddshpje.html