找回密码
 立即注册

QQ登录

只需一步,快速开始

wlosg
论坛元老   /  发表于:2013-9-25 10:38  /   查看:11628  /  回复:10
1.在VB6.0中使用Spread COM 8.0时,导出EXCEL文件时,如何导出带有列标题文件,现在好像导出时没有列标题信息?有没有方法可以实现?

2.通过ADO绑定数据源时,如下代码所示:
'设置数据源
       Ado.ConnectionString = SQLStr
          Ado.RecordSource = "SELECT * FROM TestTable where " & lstr
          Ado.Refresh
          Set fpSpread1.DataSource = Ado
(1).数据源数据加载到表格后,如何断开与数据源数据的连接?
(2).如何通过数据库字段名获得当前表格所在的列位置(因为当列设置为可以移动时,需要重新获取位置)?
(3).如何通过一列的字段信息来设置行和列的颜色,如有一个结果列,字段信息中只有PASS、FAIL两种状态,我想设置PASS的时候行是红色,FAIL的时候是绿色,有没有什么比较快的方法?
(4).还有一个问题就是,我的数据库字段有一个时间字段信息,类型为datetime格式(即如:2013-08-01 12:00:01),但是在表格中显示时,确只显示2013-08-01,时间信息没有显示出来是为什么?

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-9-25 11:36:00
沙发
回复 1楼wlosg的帖子

wlosg 你好,
1.关于第一个问题,目前 Spread COM 不支持导出列头,可以在导出之前添加一行,遍历列头文本填充到该行。再导出,模拟列头。
回复 使用道具 举报
wlosg
论坛元老   /  发表于:2013-9-25 11:41:00
板凳
回复 2楼iceman的帖子

楼主,你好!那其它问题有没有解决的方法?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-25 11:49:00
地板
回复 3楼wlosg的帖子

其他问题正在调查中,请稍等。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-25 12:15:00
5#
回复 3楼wlosg的帖子

2.通过ADO绑定数据源时,如下代码所示:
'设置数据源
       Ado.ConnectionString = SQLStr
          Ado.RecordSource = "SELECT * FROM TestTable where " & lstr
          Ado.Refresh
          Set fpSpread1.DataSource = Ado
(1).数据源数据加载到表格后,如何断开与数据源数据的连接?
   可以把数据库连接关掉,先判断 ADODB.Connection 的 State,如果为 0 则关闭:

  1. Dim dbpath As String

  2.     dbpath = App.Path & "\common\nwind.mdb"
  3.    
  4.     Set adoconn1 = New ADODB.Connection
  5.     adoconn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath & ";Persist Security Info=False"
  6.    
  7.     'Populate grid with sample data
  8.     Set rs = New ADODB.Recordset
  9.     rs.Open "Select top 100 * from Orders", adoconn1, adOpenStatic, adLockOptimistic
  10.     Set fpSpread1.DataSource = rs
  11.    
  12.     If adoconn1.State = 0 Then
  13.         adoconn1.Close
  14.     End If
复制代码

(2)通过 SearchRow  方法获取所在列:

  1. Private Sub Command2_Click()

  2. Dim field As String '
  3. field = "测试"

  4. Dim col As Integer

  5. col = Me.fpSpread1.SearchRow(0, 0, 100, field, SearchFlagsValue)

  6. End Sub
复制代码

(3).如何通过一列的字段信息来设置行和列的颜色,如有一个结果列,字段信息中只有PASS、FAIL两种状态,我想设置PASS的时候行是红色,FAIL的时候是绿色,有没有什么比较快的方法?
可以通过遍历单元格文本来判断,Spread COM 版没有提供条件格式化功能:
  1. Private Sub Command2_Click()

  2. Dim i As Integer

  3. i = 0

  4. Dim rowcount As Integer
  5. rowcount = Me.fpSpread1.MaxRows

  6. Dim text As String

  7. For i = 0 To rowcount
  8.     Me.fpSpread1.row = i
  9.     Me.fpSpread1.col = 2
  10.    
  11.     text = Me.fpSpread1.text
  12.     If text = "FAIL" Then
  13.         Me.fpSpread1.BackColor = RGB(0, 0, 255)
  14.     ElseIf text = "PASS" Then
  15.         Me.fpSpread1.BackColor = RGB(0, 255, 0)
  16.     End If
  17.    
  18. Next i
  19. End Sub
复制代码


(4).还有一个问题就是,我的数据库字段有一个时间字段信息,类型为datetime格式(即如:2013-08-01 12:00:01),但是在表格中显示时,确只显示2013-08-01,时间信息没有显示出来是为什么?
Spread COM 版的 CellTypeDate 仅支持显示到日期,无法显示时间。
回复 使用道具 举报
wlosg
论坛元老   /  发表于:2013-9-26 08:28:00
6#
回复 2楼iceman的帖子

楼主,你好!明白了!那我想问一下,如何在第一行之前再添加一行呢?用代码如何实现,如我想在第一行之前再添加一新行!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-26 09:24:00
7#
回复 6楼wlosg的帖子

wlosg 你好,
设置方法如下:

  1. Private Sub Command1_Click()
  2. Me.fpSpread1.InsertRows 1, 1
  3. End Sub
复制代码
回复 使用道具 举报
wlosg
论坛元老   /  发表于:2013-9-26 10:06:00
8#
回复 7楼iceman的帖子

iceman,你好!真是不好意思!还有一个问题想请教一个,可否将一整行数据(包括单元格格式,如合并单元格信息等)一并复制粘贴到新添加的行中.谢谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-9-26 13:29:00
9#
回复 8楼wlosg的帖子

呵呵,没关系的,可以使用 CopyRange  方法进行复制。再清除数据保留格式。
回复 使用道具 举报
wlosg
论坛元老   /  发表于:2013-9-26 14:54:00
10#
回复 9楼iceman的帖子

iceman,你好!CopyRange是不是不能复列标题啊,我用
fpSpread2.CopyRange 1, 0, fpSpread2.MaxCols, 0, 1, 1 好像没有反应?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部