以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  导出自定义当前表的EXCEL并打开  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59901)

--  作者:一笑
--  发布时间:2014/11/13 10:58:00
--  导出自定义当前表的EXCEL并打开
自己参考编写保存代码如下:
Dim flg As New SaveExcelFlags
flg.RowNumber = True
    flg.CellStyle = False
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Tables("订单").SaveExcel(dlg.FileName, "订单",flg)  \'保存文件
End If
请教专家以下问题:
1. 需要导出并保存当前表的EXCEL文件,因为需要自定义保存格式而不是默认格式,因此不能用currenttable.Save()。。。,
2. 需要保存后再打开文件
谢谢!


--  作者:有点甜
--  发布时间:2014/11/13 11:00:00
--  

 设计好模板以后,导出数据

 

http://www.foxtable.com/help/topics/1145.htm

 


--  作者:一笑
--  发布时间:2014/11/13 20:40:00
--  
每次导出都设计模板太麻烦。我用得较多的是通过菜单中的导出EXCEL工具直接把当前表导出,所以自建窗口时想写这样的代码。
我已经琢磨出导出当前表的代码,但现在有个问题:
代码已写明:flg.CellStyle = True,导出正常表格数据时保留了单元格格式,但导出汇总或交叉统计表时却不行,请教为什么?谢谢

--  作者:有点甜
--  发布时间:2014/11/13 20:43:00
--  
 只能导出数据部分,小计、统计部分,是不会被导出的。
--  作者:一笑
--  发布时间:2014/11/13 21:45:00
--  
能够导出,如下:
狐表中数据:

导出后数据:

图片点击可在新窗口打开查看此主题相关图片如下:汇总表.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导出汇总表.xls



--  作者:有点甜
--  发布时间:2014/11/13 21:53:00
--  

 没办法,导出的时候,都是原始数据的。

 

 需要对时段、百分号的数据特殊处理才行的。

 

 你可以编写代码导出。 http://www.foxtable.com/help/topics/1144.htm

 


--  作者:一笑
--  发布时间:2014/11/13 22:18:00
--  
导出正常表格数据时保留了单元格格式,见附件。时段导出EXCEL表后,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导出带格式的excel.xls

以“常规”格式呈现而不是秒。

--  作者:有点甜
--  发布时间:2014/11/13 22:20:00
--  
 做个例子发上来吧,说明你想做什么。
--  作者:一笑
--  发布时间:2014/11/13 23:02:00
--  
如项目:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导出excel.foxdb


通过菜单中的高速导出EXCEL工具导出“八月时间”表数据-选择“保留格式设置”则可以导出显示分钟:秒格式时段的EXCEL文件,如附件“八月时间-导出EXCEL带格式”:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:八月时间-导出excel带格式.xls

而进行统计后,同样方法导出的机型汇总表EXCEL文件中时段却只能显示秒,如附件“导出机型汇总表”:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导出机型汇总表.xls

为何有区别?为何汇总表不能导出分钟:秒格式时段?谢谢!

--  作者:有点甜
--  发布时间:2014/11/14 9:16:00
--  

 测试了一下,这个无可避免,必须用代码处理。

 

Dim t As Table = Tables("交叉统计")
Dim fl As String = ProjectPath & "交叉统计.xls"
Dim name As String = "交叉统计"
t.SaveExcel(fl, name)

Dim book As new XLS.Book(fl)
Dim sheet As XLS.Sheet = book.Sheets(name)
For j As Integer = 0 To t.Cols.Count - 1
    If t.Cols(j).DataCol.ExtendType = ExtendTypeEnum.TimeSpan Then
        For i As Integer = t.HeaderRows To sheet.Rows.Count - 1
            Dim s As Double = val(sheet(i, j).Text)
            sheet(i, j).Value = format(s \\ 3600, "00") & ":" & format((s Mod 3600) \\ 60, "00")
        Next
    End If
Next

book.save(fl)