vb 无 oel 生成 xls

hanata 2007-12-30 06:51:44
VB 在不安装 excel 的环境下 生成 xls 文件 ??
...全文
88 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
温飞_会员 2008-01-02
绝对不行!!!
回复
chensijian 2008-01-02
应该不行的吧。没有控件无法生成的呀
回复
anticlimax 2008-01-02
还有种方法用vsflexgrid控件,它有个.save方法,可以生成xls
回复
使用CSV格式输出文件即可:

1:CSV文件就是文本文件。
2:在安装有OFFICE的系统上,CSV格式被默认使用EXCEL打开
3:CSV只能保存内容,无法保存格式
4:文件格式:逗号分割字段,回车分割记录

举个例子:
将一下内容粘贴到一个新建文本文件内

姓名,性别,年龄
老大,男,30
老二,男,29

保存文本文件,并改名为:TEXT.CSV
最后,你双击该文件试试。
回复
宏正 2008-01-02
当然可以了,有BIFF8格式的(office2000-office2003),完全通过VB代码来创建Excel文件.
组件是老外写的,但老外的不支持Unicode,我重新根据BIFF8格式,重写了代码
偶的联系:hongzhen#mail.nbptt.zj.cn
示例:

Private Sub sfWriteXls_Table(ByVal poListView As Object, ByVal pvTxt As Variant, ByVal psFile As String, ByVal pvData As Variant)
Dim Wbook As ExcelWorkbook
Dim Wsheet As ExcelWorksheet
'Dim row As ExcelRow
Dim cell As ExcelCell
Dim style As ExcelCellStyle

Dim lRow As Long
Dim j As Long, i As Long

Dim sDataType As String

Set Wbook = Excel8.CreateExcelWorkbook
Wbook.SetDefaultFont "宋体", 10

Call Wbook.CreateSheet("Sheet1")
Set Wsheet = Wbook.GetSheet("Sheet1")
Wbook.SetActiveSheet "Sheet1"

With Wsheet.PrintSetup
.CenterHorizontally = True '水平居中
.HeaderMargin = 0.5 ' inches
.TopMargin = 1.5
.FitPagesWide = 1
.FitPagesHigh = 1
.BottomMargin = 1.5
.FooterMargin = 0.5
.Orientation = oPortrait
.ScaleFactor = 100 '打印缩放比例
End With
'' '[--------------------
'' With Wsheet.Header
'' .StartLeftSection
'' .SetFont "宋体", fsItalic
'' .SetFontSize 10
'' .AddText "页眉 左边"
'' .StartCenterSection
'' .SetFont "宋体", fsBold
'' .SetFontSize 20
'' .AddText "页眉 中间"
'' .StartRightSection
'' .SetFont "宋体", fsBoldItalic
'' .SetFontSize 10
'' .AddText "页眉 右边"
'' End With
'' With Wsheet.Footer
'' .StartLeftSection
'' .SetFont "宋体", fsItalic
'' .SetFontSize 10
'' .AddText "页脚 左边"
'' .StartCenterSection
'' .SetFont "宋体", fsBold
'' .SetFontSize 20
'' .AddText "页脚 中间"
'' .StartRightSection
'' .SetFont "宋体", fsBoldItalic
'' .SetFontSize 10
'' .AddText "页脚 右边"
'' End With
'' '--------------------]

Set style = Excel8.CreateExcelCellStyle
'列
For j = 1 To poListView.ColumnHeaders.Count
'Set style = sfWriteXls_Style(poListView, j, , , sDataType)
Wsheet.SetColumnStyle j, j, poListView.ColumnHeaders(j).Width * mdXs ', style
Next

'标题
lRow = 0
For i = 0 To UBound(pvTxt)
Set style = sfWriteXls_Style(poListView, 0, 1, pvTxt(i))
lRow = lRow + 1
Wsheet.AddCell i, lRow, Split(pvTxt(i), ",")(0), style

If UBound(Split(pvTxt(i), ",")) >= 4 Then
If Val(Split(pvTxt(i), ",")(4)) = 0 Then
Wsheet.GetRow(lRow).Height = 25
Else
Wsheet.GetRow(lRow).Height = Val(Split(pvTxt(i), ",")(4))
End If
Else
Wsheet.GetRow(lRow).Height = 25
End If

Wsheet.MergeCells 1, lRow, poListView.ColumnHeaders.Count, i '行合并
Next

'表头
lRow = lRow + 1
Set style = sfWriteXls_Style(poListView, j, 2)
For j = 1 To poListView.ColumnHeaders.Count
Wsheet.AddCell j, lRow, poListView.ColumnHeaders(j).Text, style
Next
' If poListView.listitems.Count > 0 Then
' Wsheet.GetRow(lRow).Height = poListView.listitems(1).Height * mdXs
' End If

'行
If Not (IsNull(pvData) Or IsEmpty(pvData)) Then
Set style = Excel8.CreateExcelCellStyle
With style
.LeftLineStyle = xfbtThin
.LeftLineColour = cBlack

.TopLineStyle = xfbtThin
.TopLineColour = cBlack

.RightLineStyle = xfbtThin
.RightLineColour = cBlack

.BottomLineStyle = xfbtThin
.BottomLineColour = cBlack
End With
Wsheet.AddTable 1, lRow + 1, style, pvData
End If

Wbook.Save psFile
End Sub
回复
杨哥儿 2008-01-01
你只要加入EXCEL控件就可以操作EXCEL了。
回复
Michael_g 2008-01-01
应该是没办法,除非你自已写个Excel 文件解码器
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告