找回密码
 立即注册

QQ登录

只需一步,快速开始

wlosg
论坛元老   /  发表于:2013-10-10 10:14  /   查看:7156  /  回复:3
关于VB6.0中使用Spread COM 8.0导出EXCEL插入标题时,如果邦定的数据库字段为Int类型时,标题中的中文自动变成了0,怎么回事?

1.数据库数据显示是通过如下方法从数据库中直接查询得到的:
  1. '设置数据源
  2.     Set Rs = New ADODB.Recordset
  3.     Rs.Open "SELECT ID,MDCode,PTCode,FACode,TSCode,OHCode,Q1Code,Q2Code,Q3Code,Source,UserName,FailType,PCName,Result,convert(varchar(20),StartTime,120),convert(varchar(20),EndTime,120),SysVER,Edition,Remark,SortID,CardType,DBase,CheckDBase,Xml,Equipment,convert(varchar(20),TSDate,120),convert(varchar(20),GLDate,120),CaInt,convert(varchar(20),LfDate,120) FROM TestTable where " & lstr, Ronn, adOpenKeyset, adLockOptimistic
  4.     Set fpSpread1.DataSource = Rs
  5.     Rs.Close
复制代码


2.表格数据显示如下图所示

222.gif

3.我在导出EXCEL时,为了能够将标题一起导出,使用了如下方法:
先在第一行插入一行,然后将标题行的信息复制到刚插入的行,通过ExportToExcel方法导出后,再删除刚插入的行,具体代码如下:
  1. fpSpread1.Redraw = False
  2.                   fpSpread1.MaxRows = fpSpread1.MaxRows + 1
  3.                   fpSpread1.InsertRows 1, 1

  4.                   fpSpread1.Col = 1
  5.                   fpSpread1.col2 = fpSpread1.MaxCols
  6.                   fpSpread1.Row = 1
  7.                   fpSpread1.row2 = 1
  8.                   
  9.                   fpSpread1.BlockMode = True
  10.                   fpSpread1.CellType = CellTypeStaticText
  11.                   fpSpread1.BlockMode = False
  12.                   fpSpread1.CopyRange 1, -1000, fpSpread1.MaxCols, -1000, 1, 1
  13.                   fpSpread1.BlockMode = True
  14.                   fpSpread1.TypeHAlign = TypeHAlignCenter
  15.                   fpSpread1.BackColor = &H80FF80
  16.                   fpSpread1.ForeColor = &HFFFFFF
  17.                   fpSpread1.FontName = "Arial"
  18.                   fpSpread1.FontSize = 11
  19.                   fpSpread1.BlockMode = False
  20.                  
  21.                   ret = fpSpread1.ExportToExcel(dlg.FileName, "报表数据", "")
  22.                   '删除导出临时标题行
  23.       
  24.                   fpSpread1.DeleteRows 1, 1
  25.                   fpSpread1.MaxRows = fpSpread1.MaxRows - 1
  26.                   fpSpread1.Redraw = True
复制代码


但是为什么我导出后的EXCEL文件中,只要数据库字段不是字符串类型的,标题名都没有正常显示。如下图所示:
如何解决啊!急急急

333.gif

3 个回复

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

wlsog 你好,

请尝试在绑定之前设置 Spread DAutoCellTypes  为false ,这样就可以不按照数据库字段类型生成单元格信息。
回复 使用道具 举报
wlosg
论坛元老   /  发表于:2013-10-10 11:08:00
板凳
回复 2楼iceman的帖子

iceman 你好!
   非常感谢!已经解决了!

     Set fpSpread1.DataSource = ds后,如果没有ds.Close时,是不是编辑表格中的数据时,会同时更新数据库数据啊?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-10 14:14:00
地板
回复 3楼wlosg的帖子

我这边使用 Access 数据库测试,无论是否关闭都会同步到数据库。

可以使用   fg.DAutoSave = False 属性控制,Ture 即同步,否则不同步。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部