vb.net 中,通过处理从数据库导出数据到excel

popobeelyt 2008-04-12 10:56:12
表内数据结构如下

class_name chtablename tablename enfield

空间资源 行政区域 res_area fhwjoi
空间资源 行政区域 res_area fjeiosfew
空间资源 行政区域 res_area fenwrjw
空间资源 站点 res_building 2ir32i
空间资源 站点 res_building 2eoe
空间资源 站点 res_building
空间资源 站点 res_building lkfoewd
管线资源 管孔 EN_PIPEHOLE 329ur93
管线资源 管孔 EN_PIPEHOLE fe3oii
管线资源 管孔 EN_PIPEHOLE foiowo
管线资源 电缆 EN_CABLE iiwwoeof
管线资源 电缆 EN_CABLE
管线资源 电缆 EN_CABLE geww
设备资源 BITS res_transkin few
设备资源 BITS res_transkin
设备资源 BITS res_transkin efrjeww

要求是:1、根据class_name来确定一个excel文件,例如,当该行数据的class_name 为 空间资源,则建立一个 空间资源.xls 文件。
2、根据chtablename 来确定一个sheet ,并且 该sheet工作表的A1 单元格的值 和该sheet名称 均为 chtablename的值。
3、把对应的属性enfield值依行导入对应的sheet工作表内。
比如,对于管线资源来说,应该有两个sheet:管孔 和 电缆 ,管孔sheet里面包含属性:329ur93 fe3oii foiowo

请各位高手大虾帮忙啊~~小弟在此谢过啦~~`
...全文
205 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
popobeelyt 2008-04-14
  • 打赏
  • 举报
回复
能把第2点说详细点么?怎么实现?
popobeelyt 2008-04-13
  • 打赏
  • 举报
回复
谢谢楼上阿~等明天去公司连上数据库试试~现在没法运行~~
fairy4 2008-04-13
  • 打赏
  • 举报
回复
第1点,可以用saveas解决,参考我的例子,判断数据的class_name 为 空间资源,将Me.SaveFileDialog1.FileName = TimeToStr(Now()) & ".xls",设置为你需要的名字!
第2点:sheet支持改名和命名 xlSheet.Name = "aaaa"

fairy4 2008-04-13
  • 打赏
  • 举报
回复
因为出现空格而使比较失败,是很有可能的,你可以在那里设置断点,按F8看看,row1("class_name").ToString 的值到底是什么!
fairy4 2008-04-13
  • 打赏
  • 举报
回复

Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
xlApp = New Excel.Application
xlBook = xlApp.Workbooks.Add


xlSheet = xlBook.Worksheets(1)
xlApp.Visible = False
xlSheet.Activate()
xlSheet.Cells.Clear()

Dim rowindex As Integer = 3
Dim colindex As Integer = 2
Dim col As DataColumn
Dim row As DataRow
Dim nxh As Integer = 1


For x As Integer = 1 To 20
xlApp.Cells(rowindex, colindex) = x
colindex += 1
rowindex += 1
Next
xlApp.Visible = True

我试验了下,与不保存没有关系!
你看看是不是row1("class_name").ToString 有空格,是的case的值不符合引起的原因!

popobeelyt 2008-04-12
  • 打赏
  • 举报
回复
谢谢楼上.如果只是操作一个excel文件一开始也成功了.就是加入判断class_name 和chtablename的语句后就不行了。现在就是想知道怎么实现1,2点的功能呢~~
fairy4 2008-04-12
  • 打赏
  • 举报
回复
这是一个完整的EXCEL操作例子

Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim dsTemp01 As DataSet
Dim daTemp01 As OleDb.OleDbDataAdapter
Dim rw01 As DataRow
Dim x, y, z, a As Integer

Me.SaveFileDialog1.Title = "EXCEL"
Me.SaveFileDialog1.Filter = "excel(*.xls)|*.xls"
Me.SaveFileDialog1.FileName = TimeToStr(Now()) & ".xls"
Dim path As String

If Me.SaveFileDialog1.ShowDialog = DialogResult.OK Then
path = Me.SaveFileDialog1.FileName

xlApp = New Excel.Application
xlBook = xlApp.Workbooks.Add
xlSheet = xlBook.Worksheets(1)

xlApp.Visible = False
xlSheet.Activate()
xlSheet.Cells.Clear() 

Dim rowindex As Integer = 3
Dim colindex As Integer
Dim col As DataColumn
Dim row As DataRow
Dim nxh As Integer = 1

Dim Table As New DataTable
Table = CType(DataGrid1.DataSource, DataTable)
For Each col In Table.Columns
colindex = colindex + 1
xlApp.Cells(1, colindex) = col.ColumnName 
Next
For Each row In CType(DataGrid1.DataSource, DataTable).Rows
colindex = 1
For Each col In CType(DataGrid1.DataSource, DataTable).Columns
xlApp.Cells(rowindex, colindex) = RTrim(Convert.ToString(row(col.ColumnName)))
colindex += 1
Next
rowindex += 1
Next


xlApp.Visible = False
xlBook.SaveAs(path)
xlApp.Quit()
xlApp = Nothing
xlBook = Nothing
xlSheet = Nothing
popobeelyt 2008-04-12
  • 打赏
  • 举报
回复
没有保存应该不会影响显示出来吧.
fairy4 2008-04-12
  • 打赏
  • 举报
回复
说错了,你设置的是显示!
fairy4 2008-04-12
  • 打赏
  • 举报
回复
当然不会有提示,
首先,你是添加了一个excel的工作簿,但是你设置了隐藏(xlApp.Visible = True )
其次,你没有保存你生成的excel文档
popobeelyt 2008-04-12
  • 打赏
  • 举报
回复
这是我写来测试的代码,其中没有去管第2点的功能了,也只是对空间资源进行判断,运行后什么提示都没有,也不报错,不知道是什么地方的问题?小弟是绝对的菜鸟,各位大侠多多帮忙啊~~

Dim xlApp As New Microsoft.Office.Interop.Excel.Application
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet

Dim rowIndex As Integer
rowIndex = 1

Dim table1 As New DataTable
table1 = select_table().Tables("tabledictionary_excel_classinfo") ///////////取表

Dim row1 As DataRow
Dim i As Integer
i = 0

For Each row1 In table1.Rows

Select Case row1("class_name").ToString

Case "管线资源"

If i = 0 Then

xlBook = xlApp.Workbooks().Add

xlSheet = xlBook.Worksheets("sheet1")

xlApp.Visible = True

i = 1

End If

rowIndex = rowIndex + 1

xlApp.Cells(rowIndex, 1) = row1("enfield")

End Select
Next

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧