关于将MSFlexGrid中的数据导出到Excel的问题

penghongjie 2005-10-23 10:01:59
我在将MSFlexGrid中的数据导出到Excel时,遇到以下问题:
1、怎么合并excel中的单元格?
2、怎么设置excel某列的宽度?
3、怎么格式化某列数据(对齐方式或者日期数值格式设置)?
。。。。。
我尝试了以ExcelSheet.Cells.Merge的方法及属性都不行,可能是不大会用。

我的函数如下:
Public Function flexgridToExcel(flexgrd As MSFlexGrid, dtlRow As Integer) As Excel.Worksheet
If flexgrd.Rows = flexgrd.FixedRows Then
Set flexgridToExcel = Null
Exit Function
End If

Dim ExcelApp As New Excel.Application
Dim ExcelBook As New Excel.Workbook
Dim ExcelSheet As New Excel.Worksheet
Dim i As Long
Dim L As Long

Set ExcelApp = CreateObject("Excel.Application")
Set ExcelBook = ExcelApp.Workbooks.Add(1)
Set ExcelSheet = ExcelBook.Worksheets(1)
ExcelApp.Visible = True
' ExcelSheet.Cells.AutoFit
' ExcelSheet.Cells.AutoFormat
' ExcelSheet.Cells.Merge
Dim col As Integer
For i = 0 To flexgrd.Rows - 1
col = 0
For L = 1 To flexgrd.Cols - 1
If flexgrd.ColWidth(L) > 0 Then
col = col + 1
' ExcelSheet.Cells(i +dtlRow, col).Width = flexgrd.ColWidth(L)
ExcelSheet.Cells(i + dtlRow, col) = flexgrd.TextMatrix(i, L) & ""
End If
Next L
Next i
Set flexgridToExcel = ExcelSheet
End Function
...全文
317 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xjliang007 2006-01-18
dd
回复
huntercd 2005-10-31
to:penghongjie (Hunter)
关于将MSFlexGrid中的数据导出到Excel的问题
我在用你提供的这个函数时,出现了 编译错误:用户定义类型未定义;错误定位在public function 定义的这一行上;我在部件中增加了 Miscosoft excel 工作表 控件啊,还有什么操作没做呢?
还有你dtlRow参数代表什么意思啊
回复
faysky2 2005-10-24
3.格式设置:
xSheet.Cells(3, 2).NumberFormatLocal = "@" '使第3行第2列的输入格式变为“文本”型
xSheet.Columns("A:A").NumberFormatLocal = "[DBNum1]yyyy""年""m""月""d""日""" '设置第一列的格式为日期格式(二零零五年十月二十三日)

其实你可以自己录制宏就能得到自己想要的代码:
菜单的"工具"->"宏"->"录制新宏",然后开始对Word操作,完了在"宏"->"Visual Basic编辑器"->"模块"里的模块就有你录制的过程的代码,把需要的代码稍微修改就可以直接应用到vb里
回复
vbman2003 2005-10-24
你想在EXCEL中实现什么结果,只要录制一下操作过程的宏,在VBA模块中看看代码就明白了
回复
penghongjie 2005-10-24
To:faysky2()
谢谢,下来我再调用一下,之后我会给你加分的。
回复
cosio 2005-10-24
MARK!
回复
faysky2 2005-10-23
2.
'{设置列宽
xSheet.Columns("A:A").ColumnWidth = 7.25
xSheet.Columns("B:B").ColumnWidth = 11
xSheet.Columns("C:C").ColumnWidth = 7.75
xSheet.Columns("D:D").ColumnWidth = 7.5
xSheet.Columns("E:E").ColumnWidth = 18.88
xSheet.Columns("F:F").ColumnWidth = 8
xSheet.Columns("G:G").ColumnWidth = 8.25
xSheet.Columns("H:H").ColumnWidth = 8.5
xSheet.Columns("I:I").ColumnWidth = 7.88
回复
faysky2 2005-10-23
1.合并单元格:
xSheet.Range("A1:I1").MergeCells = True '合并第一行单元格,从A列到I列
回复
faysky2 2005-10-23
操作Excul的常用方法和属性

1.创建Excel对象

  eole=CREATEOBJECT(′Excel.application′)

  2.添加新工作簿

  eole.Workbooks.add

  3.设置第3个工作表为激活工作表

  eole.Worksheets(″sheet3″).Activate

  4.打开指定工作簿

  eole.Workbooks.Open(″c:\temp\ll.xls″)

  5.显示Excel窗口

  eole.visible=.t.

  6.更改Excel标题栏

  eole.Caption=″VFP应用程序调用Microsoft Excel″

  7.给单元格赋值

  eole.cells(1,4).value=XM(XM为数据库字段名)

  8.设置指定列的宽度(单位:字符个数)

  eole.ActiveSheet.Columns(1).ColumnWidth=5

  9.设置指定行的高度(单位:磅)

  eole.ActiveSheet.Rows(1).RowHeight=1/0.035

  (设定行高为1厘米,1磅=0.035厘米)

  10.在第18行之前插入分页符

  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1

  11.在第4列之前删除分页符

  eole.ActiveSheet.Columns(4).PageBreak=0

  12.指定边框线宽度(Borders参数如下)

  ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3

  13.设置四个边框线条的类型

  eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1

  (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)

  14.设置页眉

  eole.ActiveSheet.PageSetup.CenterHeader=″报表1″

  15.设置页脚

  eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″

  16.设置页眉到顶端边距为2厘米

  eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035

  17.设置页脚到底边距为3厘米

  eole.ActiveSheet.PageSetup.FooterMargin=3/0.035

  18.设置顶边距为2厘米

  eole.ActiveSheet.PageSetup.TopMargin=2/0.035

  19.设置底边距为4厘米

  eole.ActiveSheet.PageSetup.BottomMargin=4/0.035

  20.设置左边距为2厘米

  veole.ActiveSheet.PageSetup.LeftMargin=2/0.035

  21.设置右边距为2厘米

  eole.ActiveSheet.PageSetup.RightMargin=2/0.035

  22.设置页面水平居中

  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.

  23.设置页面垂直居中

  eole.ActiveSheet.PageSetup.CenterVertically=.t.

  24.设置页面纸张大小(1-窄行8511 39-宽行1411)

  eole.ActiveSheet.PageSetup.PaperSize=1

  25.打印单元格网线

  eole.ActiveSheet.PageSetup.PrintGridlines=.t.

  26.拷贝整个工作表

  eole.ActiveSheet.UsedRange.Copy

  27.拷贝指定区域

  eole.ActiveSheet.Range(″A1:E2″).Copy

  28.粘贴

  eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial

  29.在第2行之前插入一行

  eole.ActiveSheet.Rows(2).Insert

  30.在第2列之前插入一列

  eole.ActiveSheet.Columns(2).Insert

  31.设置字体

  eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″

  32.设置字体大小

  eole.ActiveSheet.Cells(1,1).Font.Size=25

  33.设置字体为斜体

  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.

  34.设置整列字体为粗体

  eole.ActiveSheet.Columns(1).Font.Bold=.t.

  35.清除单元格公式

  eole.ActiveSheet.Cells(1,4).ClearContents

  36.打印预览工作表

  eole.ActiveSheet.PrintPreview

  37.打印输出工作表

  eole.ActiveSheet.PrintOut

  38.工作表另为

  eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)

  39.放弃存盘

  eole.ActiveWorkbook.saved=.t.

  40.关闭工作簿

  eole.Workbooks.close

  41.退出Excel

  eole.quit


回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2005-10-23 10:01
社区公告
暂无公告