以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  交叉统计生成的统计表,保存为excel后,百分比显示出来是小数  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=124703)

--  作者:susu312
--  发布时间:2018/9/12 10:27:00
--  交叉统计生成的统计表,保存为excel后,百分比显示出来是小数

交叉统计生成的统计表,保存为excel后,百分比显示出来是小数

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/9/12 10:35:00
--  

设置单元格格式,如

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=124242&skin=0

 


--  作者:susu312
--  发布时间:2018/9/12 10:53:00
--  
以下是引用有点甜在2018/9/12 10:35:00的发言:

设置单元格格式,如

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=124242&skin=0

 

Dim dt As Table = e.Form.controls("table1").Table
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
 dlg.Filter= "Excel文件|*.xls"  \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
     dt.SaveExcel(dlg.FileName, "统计表")   \'保存文件
End  If

 

老师,、

1、我这个涉及到多表头,只能先保存下来,然后设置格式,(多表头文件如何,为了设置格式,重新制作excel时,标题那里算一行么,)

2、我如何判断占比列,或者判断小数Format(0.56,"00.0%") \'56.0%

 

Dim dt As Table = Tables("表A")
Dim Book As New XLS.Book \'定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表


For c As Integer = 0 To dt.Cols.Count -1 \'添加列标题
    Sheet(0, c).Value = dt.Cols(c).Name
    If dt.grid.Cols(c+1).Format > "" Then
        Dim Style As Xls.Style = Book.NewStyle \'新建一个样式
        Style.Format = dt.grid.Cols(c+1).Format
        sheet.Cols(c).style = style
    End If

Next
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To dt.Cols.Count -1
        Sheet(r +1, c).Value = dt.rows(r)(c)
    Next
Next
\'打开工作簿
Book.Save("c:\\reports\\test.xls")
Dim Proc As New Process
Proc.File = "c:\\reports\\test.xls"
Proc.Start()

 

 

 

 

[此贴子已经被作者于2018/9/12 10:56:22编辑过]

--  作者:有点甜
--  发布时间:2018/9/12 10:55:00
--  

 

生成excel以后,打开文件xls,然后循环每一行(每一列),设置style即可。

 


--  作者:有点甜
--  发布时间:2018/9/12 10:59:00
--  
不会做把xls文件发上来测试。
--  作者:susu312
--  发布时间:2018/9/12 11:14:00
--  
以下是引用有点甜在2018/9/12 10:55:00的发言:

 

生成excel以后,打开文件xls,然后循环每一行(每一列),设置style即可。

 

Dim Proc As New Process \'打开工作簿
Proc.File =
"c:\\reports\\test.xls"
Proc.Start()

 

 

Dim Style As XLS.Style = Book.NewStyle() \'定义新样式
Style.ForeColor = Color.Red
\'设置样式的字体颜色

 

老师,您可以给我大概写个框架么?

 

我现在可以获得 Dim dt As Table = e.Form.controls("table1").Table

 

1、如何打开,xls

2、设置字体的样式,Format(0.56,"00.0%") \'56.0%  style.format么?

3、如何判断处哪些单位格需要转换为百分比,判断出它是小数么?isnumberic好像不行?根据列名么?它是多表头的,列名是怎么个判断呀?


--  作者:有点甜
--  发布时间:2018/9/12 11:21:00
--  

1、http://www.foxtable.com/webhelp/scr/1144.htm

 

2、style.format = "0.00%"

 

3、循环第二行的每一列,判断是不是【占比】即可。如果是,就设置样式。


--  作者:susu312
--  发布时间:2018/9/12 14:37:00
--  
以下是引用有点甜在2018/9/12 11:21:00的发言:

1、http://www.foxtable.com/webhelp/scr/1144.htm

 

2、style.format = "0.00%"

 

3、循环第二行的每一列,判断是不是【占比】即可。如果是,就设置样式。

Dim dt As Table = e.Form.controls("table1").Table
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
 dlg.Filter= "Excel文件|*.xls"  \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
     dt.SaveExcel(dlg.FileName, "统计表")   \'保存文件
     Dim Book As New XLS.Book(dlg.FileName)
     Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表
     Dim Style As XLS.Style = Book.NewStyle() \'定义新样式
     Style.Format = "0.00%"
     For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
        For c As Integer = 0 To dt.Cols.Count -1
             If dt.Cols(c).Name = "占比" Then
                   Sheet(r +1, c).Style=Style      
             End If
         Next
     Next
End  If

 

老师,请您帮我看看哪里不对?



--  作者:有点甜
--  发布时间:2018/9/12 15:45:00
--  
Dim dt As Table = CurrentTable \'= e.Form.controls("table1").Table
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls"  \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    dt.SaveExcel(dlg.FileName, "统计表")   \'保存文件
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表
    Dim Style As XLS.Style = Book.NewStyle() \'定义新样式
    Style.Format = "0.00%"
    For c As Integer = 0 To sheet.Cols.count-1
        If sheet(1,c).text = "占比" Then
            For i As Integer = 2 To sheet.Rows.count-1
                sheet(i, c).Style=Style
            Next
        End If
    Next
    book.save(dlg.FileName)
End  If