高分求助vb.net中使用msflexgrid问题

yuantaolzu 2012-08-02 01:54:35
各位达人:
情况是这样的。我在vb6中用msflexgrid 读取数据库中的数据,然后导出到用户桌面的excel中,并已经定义好打印格式,用户保存后可以直接打印的。vb6中功能是好用的。后来因为项目需要,我将他到了vs2005中(VB.NET),然后发现问题来了,目前在VB.NET中msflexgrid仍然可以读取出数据库中的数据,也仍然可以导出为excel表格,但是其中的数据没有了,也就是说在从msflexgrid导入EXCEL的 过程中丢失了单元格中的数据。源码如下(无用的方法我暂且删除),还请哪位大哥帮忙,分不够可以开帖另加,十分紧急。在线等。


Option Strict Off
Option Explicit On
Friend Class 通用打印
'这是一个将表格数据导出为EXCEL文件的类,使用的机器上必须安装有EXCEL。

Dim BBGrid As Object
Dim btbtV, btV, ywzjV As Object
Dim zzdxV, ywbtV, dylxV As String
Dim bbkdV As Double
Dim dymsV, hsV, dyfxV As Short
Dim fontsizeV, tt As Short

Public Sub Excel打印()
Dim m, J, l, k, N As Short
Dim i As Double
Dim hhV, hhV1 As String

On Error Resume Next
Dim ex1 As Microsoft.Office.Interop.Excel.Application
ex1 = CreateObject("Excel.Application")
'判断机器上是否安装了EXCEL
If ex1 Is Nothing Then
MsgBox("您的电脑还没有安装Excel,无法将数据导出为EXCEL文件!", MsgBoxStyle.Critical, "注意")
ex1.Quit()
ex1 = Nothing
End If

ex1.Visible = True
ex1.Workbooks.Add()

With BBGrid
hhV1 = ""
m = 0
N = 0
If NotnullN(hsV) = 0 Then
hsV = 0
End If

For i = 0 To .Cols - 1

If .ColWidth(i) <> 0 Then
If NotnullN(bbkdV) = 0 Then
If (m Mod 26) = 0 And m <> 0 Then
hhV1 = Chr(Asc("A") + Int(m / 26) - 1)
N = 0
End If
If m < 26 Then

ex1.Range(Chr(Asc("A") + m) & "3").ColumnWidth = .ColWidth(i) / 35
Else

ex1.Range(hhV1 & Chr(Asc("A") + N) & "3").ColumnWidth = .ColWidth(i) / 35
N = N + 1
End If
Else
If (m Mod 26) = 0 And m <> 0 Then
hhV1 = Chr(Asc("A") + Int(m / 26) - 1)
N = 0
End If
If m < 26 Then
ex1.Range(Chr(Asc("A") + m) & "3").ColumnWidth = .ColWidth(i) / bbkdV
Else
ex1.Range(hhV1 & Chr(Asc("A") + N) & "3").ColumnWidth = .ColWidth(i) / bbkdV
N = N + 1
End If
End If
m = m + 1
End If
Next i

ex1.Range("a1")._Default = btV
If hhV1 = "" Then
ex1.Range("a1:" & Chr(Asc("A") + m - 1) & "1").MergeCells = True
Else
ex1.Range("a1:" & hhV1 & Chr(Asc("A") + N - 1) & "1").MergeCells = True
End If

ex1.Range("a2")._Default = btbtV
If hhV1 = "" Then
ex1.Range("a2:" & Chr(Asc("A") + m - 1) & "2").MergeCells = True
Else
ex1.Range("a2:" & hhV1 & Chr(Asc("A") + N - 1) & "2").MergeCells = True
End If
hhV = ""
J = 0
m = 0
N = 0

For i = 0 To .Cols - 1

If .ColWidth(i) <> 0 Then
If (m Mod 26) = 0 And m <> 0 Then
hhV1 = Chr(Asc("A") + Int(m / 26) - 1)
N = 0
End If
If m < 26 Then

ex1.Range(Chr(Asc("A") + m) & "3").Value = .TextMatrix(hsV, i)
Else

ex1.Range(hhV1 & Chr(Asc("A") + N) & "3").Value = .TextMatrix(hsV, i)
N = N + 1
End If
m = m + 1
End If
Next i

For i = hsV To .Rows - 1

Select Case Trim(dylxV)
Case "", "全部"
Case "未接收"

If Trim(.TextMatrix(i, 19)) <> "" And i > 0 Then
GoTo cw1
End If
Case "已接收"

If Trim(.TextMatrix(i, 19)) = "" And i > 0 Then
GoTo cw1
End If
End Select
J = J + 1
hhV = ""
l = 0

For k = 0 To .Cols - 1
If .ColWidth(k) > 0 Then
If l Mod 26 = 0 And l > 0 Then
If hhV = "" Then
hhV = "A"
Else
hhV = Chr(Asc(hhV) + l)
End If
End If
If k > 0 Then
If InStr(1, .TextMatrix(i, k), ".") Then
ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2)))._Default = .TextMatrix(i, k)
Else
If Len(.TextMatrix(i, k)) > 7 Then

ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2))).Value = "'" & .TextMatrix(i, k)
Else
ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2))).Value = .TextMatrix(i, k)
End If
End If
Else

ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2))).Value = .TextMatrix(i, k)
End If
l = l + 1
End If
Next k
cw1:
Next i
End With
ex1.Range("a" & Trim(Str(i + 3))).Value = ywzjV
If hhV1 = "" Then
ex1.Range("a" & Trim(Str(i + 3)) & ":" & Chr(Asc("A") + m - 1) & Trim(Str(i + 3))).MergeCells = True
Else
ex1.Range("a" & Trim(Str(i + 3)) & ":" & hhV1 & Chr(Asc("A") + N - 1) & Trim(Str(i + 3))).MergeCells = True
End If
With ex1.Workbooks(1).Styles.Add(Name:="bookman top border") '定义边框风格1
.Borders(Microsoft.Office.Interop.Excel.Constants.xlTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash
.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash
.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash
.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash
If NotnullN(fontsizeV) = 0 Then
.Font.Size = 9
Else
.Font.Size = fontsizeV
End If
.Font.Name = "宋体"
End With
With ex1.Workbooks(1).Styles.Add(Name:="bookman top border1") '定义边框风格2
.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash
If NotnullN(fontsizeV) = 0 Then
.Font.Size = 9
Else
.Font.Size = fontsizeV
End If
.Font.Name = "宋体"
End With

If NotnullC(zzdxV) = "" Then
ex1.Worksheets(1).PageSetup.PaperSize = Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4
Else
ex1.Worksheets(1).PageSetup.PaperSize = zzdxV

End If

If hhV1 = "" Then
ex1.Worksheets(1).Range("A3:" & Chr(Asc("A") + m - 1) & Trim(Str(i + 2))).Style = "bookman top border" '实现边框风格
Else
ex1.Worksheets(1).Range("A3:" & hhV1 & Chr(Asc("A") + N - 1) & Trim(Str(i + 2))).Style = "bookman top border" '实现边框风格
End If

If hhV1 = "" Then

ex1.Worksheets(1).Range(Chr(Asc("A") + m) & "3:" & Chr(Asc("A") + m) & Trim(Str(i + 2))).Style = "bookman top border1" '实现边框风格1
End If

If hhV1 = "" Then
With ex1.Worksheets(1).Range("A3:" & hhV1 & Chr(Asc("A") + N) & "3") '定义单元格内居中风格
.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignDistributed
.AddIndent = True
End With
End If


If hhV1 = "" Then
ex1.Columns._Default("a:" & Chr(Asc("A") + m - 1)).AutoFit() '自动调整列宽
Else
ex1.Columns._Default("a:" & hhV1 & Chr(Asc("A") + N - 1)).AutoFit()
End If

ex1.ActiveSheet.PageSetup.PrintTitleRows = ex1.ActiveSheet.Rows("1:3").Address '定义表头所用行
If hhV1 = "" Then
ex1.ActiveSheet.PageSetup.PrintTitleColumns = ex1.ActiveSheet.Columns("A:" & Chr(Asc("A") + m)).Address '定义标题所用列
End If

If NotnullN(dymsV) = 0 Then
dymsV = 0
End If

End Sub

End Class
...全文
378 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixuqun2012 2013-02-06
  • 打赏
  • 举报
回复
vs2005中有msflexgrid吗
ytmonkey2000 2012-08-03
  • 打赏
  • 举报
回复
将.TextMatrix(hsV, i)改成 .get_TextMatrix(hsV, i)。.NET中将方法进一步细化了。
yuantaolzu 2012-08-02
  • 打赏
  • 举报
回复
下班之前再次求高手
yuantaolzu 2012-08-02
  • 打赏
  • 举报
回复
自己顶,别沉了,求高手啊
yuantaolzu 2012-08-02
  • 打赏
  • 举报
回复
If m < 26 Then

ex1.Range(Chr(Asc("A") + m) & "3")._Default = .TextMatrix(hsV, i)
Else

ex1.Range(hhV1 & Chr(Asc("A") + N) & "3")._Default = .TextMatrix(hsV, i)
N = N + 1
End If
m = m + 1
End If
Next i

For i = hsV To .Rows - 1

Select Case Trim(dylxV)
Case "", "全部"
Case "未接收"

If Trim(.TextMatrix(i, 19)) <> "" And i > 0 Then
GoTo cw1
End If
Case "已接收"

If Trim(.TextMatrix(i, 19)) = "" And i > 0 Then
GoTo cw1
End If
End Select
J = J + 1
hhV = ""
l = 0

For k = 0 To .Cols - 1
If .ColWidth(k) > 0 Then
If l Mod 26 = 0 And l > 0 Then
If hhV = "" Then
hhV = "A"
Else
hhV = Chr(Asc(hhV) + l)
End If
End If
If k > 0 Then
If InStr(1, .TextMatrix(i, k), ".") Then
ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2)))._Default = .TextMatrix(i, k)
Else
If Len(.TextMatrix(i, k)) > 7 Then

ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2)))._Default = "'" & .TextMatrix(i, k)
Else
ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2)))._Default = .TextMatrix(i, k)
End If
End If
Else

ex1.Range(hhV & Chr(Asc("A") + l Mod 26) & Trim(Str(J + 2)))._Default = .TextMatrix(i, k)
End If
l = l + 1
End If
Next k
cw1:
Next i
End With
ex1.Range("a" & Trim(Str(i + 3)))._Default = ywzjV



其中的一段自动升级过来以后是这个样子的(_Default),value是我自己后来试着改的值,还是不对。
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。
内容概要:通过介绍短时倒谱(Cepstrogram)计算方法,开展时-倒频分析研究,深入探讨倒谱分析机理、短时倒谱构建逻辑及时-倒频分析的内涵。文中系统对比了时-倒频分析与全局倒谱、传统时频分析方法的差异,阐明其在卷积特征解耦、非平稳信号跟踪、微弱周期特征增强及多维特征融合方面的技术优势,并分析其在语音识别、机械故障诊断、音频处理和非平稳时序信号分析中的典型应用,同时指出其在分辨率、计算复杂度等方面的局限性并提出优化方向。; 适合人群:具备一定信号处理或数据分析基础,从事机械、通信、声学或自动化等领域研究的研发人员及研究生。; 使用场景及目标:① 掌握短时倒谱与时-倒频分析的理论基础与实现方法;② 应用于语音信号处理、机械设备故障诊断、音频相似性检测等工程实践;③ 对比传统方法,提升对复杂非平稳信号中隐含周期特征的识别能力; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解核心算法原理的基础上,动手运行代码并调试参数,结合具体应用场景深化对方法适用性与局限性的认识。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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