以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] XLS.Book 是不是只能用 xls 而不能用 xlsx 格式  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176421)

--  作者:zhutangxin
--  发布时间:2022/4/12 20:20:00
--  [求助] XLS.Book 是不是只能用 xls 而不能用 xlsx 格式
老师您好。
XLS.Book 是不是只能用 xls 而不能用 xlsx 格式? 我试着保存为 xlsx格式的Excel,保存后,Excel打不开。
  • Dim Book As New XLS.Book("c:\\reports\\test.xls")
    Dim
    Sheet1 As XLS.Sheet = Book.Sheets(0)
    Book.Sheets.Add()
    \'增加一个工作表
    Dim
    Sheet2 As XLS.Sheet = Book.Sheets(1)
    \'引用新增加的工作表 


--  作者:有点蓝
--  发布时间:2022/4/12 20:33:00
--  
打开的是xls 格式的文档,也必须要保存为xls 格式的文档。

打开的是xlsx格式的文档,也必须要保存为xlsx格式的文档。

不能打开xls 格式的文档,然后保存为xlsx格式的文档;反之亦然

--  作者:zhutangxin
--  发布时间:2022/4/13 0:20:00
--  
追问

在移动端 e.WriteBook() 方法,由于没有先打开Excel文件,而是生成的,保存的时候可以存成 .xlsx 格式吗?即是否可以保存为 "订单.xlsx"?

e.WriteBook() 的帮助页如下:
http://www.foxtable.com/mobilehelp/topics/0148.htm

 Case "orders.htm" \'请求的是网页,返回的是Excel文件
        Dim nms() As String = 
{"
产品","客户","数量","单价","金额","日期"}
        Dim cmd As New SQLCommand
        cmd.ConnectionName = 
"
数据源名称"
        cmd.CommandText = 
"Se lect 
产品客户数量单价数量 * 单价 As 金额日期 From {订单} Where 日期 = #" Date.Today & "#"
        Dim dt As DataTable = cmd.ExecuteReader
        Dim Book As New XLS.Book
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        For c As Integer = 0 To nms.Length - 1
            Sheet(0, c).Value = nms(c)
        Next
        For r As Integer = 0 To dt.DataRows.Count - 1
            For c As Integer = 0 To nms.Length - 1
                Sheet(r + 1, c).Value = dt.Datarows(r)(nms(c))
            Next
        Next
        book.PreBuild = False 
\'
非报表模请将PreBuild 属性设置为False
        e.WriteBook(book,
"
订单.xls",True)

--  作者:有点蓝
--  发布时间:2022/4/13 8:31:00
--  
可以的
--  作者:zhutangxin
--  发布时间:2022/4/13 11:05:00
--  
改了之后Excel打不开,报如下错误。

图片点击可在新窗口打开查看

--  作者:zhutangxin
--  发布时间:2022/4/13 11:07:00
--  
直接将上图中的 Excel 文件后缀改成 .xls 后就可以打开了


--  作者:zhutangxin
--  发布时间:2022/4/13 11:08:00
--  
代码如下:


Dim  Book As New XLS.Book
\'单元格样式
Dim Style As Xls.Style = book.NewStyle \'新建一个样式
Style.Font = new font("Arial",9, FontStyle.Regular)
\'Style.AlignHorz = XLS.AlignHorzEnum.Center \'居中
Style.AlignVert = XLS.AlignVertEnum.Center \'居中
Style.WordWrap = True

\'标题样式
Dim StyleHead As Xls.Style = book.NewStyle \'新建一个样式
StyleHead.Font = new font("Arial",9, FontStyle.Bold)
StyleHead.ForeColor = Color.White
StyleHead.BackColor = Color.Gray
StyleHead.AlignHorz = XLS.AlignHorzEnum.Center \'居中
StyleHead.AlignVert = XLS.AlignVertEnum.Center \'居中

Dim  Sheet As XLS.Sheet = Book.Sheets(0)
Sheet.Rows.Frozen = 2

Dim nms() As String = dcs.ToArray()
Dim enNms() As String = enNames.ToArray()
Dim width() As Integer = widths.ToArray()

For i As Integer = 0 To nms.Length - 1
    Sheet(0, i).Value = enNms(i) \'英文字段表头
    Sheet(1, i).Value = nms(i) \' 中文字段表头
    Sheet.Cols(i).Width = width(i)
Next
Sheet.Rows(0).Style = StyleHead
Sheet.Rows(1).Style = StyleHead

For r As Integer = 0 To dt.DataRows.Count - 1
    For i As Integer = 0 To nms.Length - 1
        If NOT dt.Datarows(r).IsNull(nms(i)) Then
            Sheet(r + 2, i).Value = dt.Datarows(r)(nms(i))
        End If
    Next
    sheet.Rows(r+2).Style = Style
Next

book.PreBuild = False  \'非报表模请将PreBuild  属性设置为False
e.WriteBook(book, tblName & "_" & Format(Date.Now, "yyyyMMdd") & ".xlsx",False)   \'  .xlsx 会导致文件打不开
[此贴子已经被作者于2022/4/13 11:09:27编辑过]

--  作者:有点蓝
--  发布时间:2022/4/13 11:45:00
--  
是有问题,已反馈。先使用.xls文件吧