zoukankan      html  css  js  c++  java
  • vb 导出excel生成图表统计

    Private Sub btnExprot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExprot.Click
            If Not T Is Nothing Then
                If T.ThreadState = ThreadState.Running Then Exit Sub
            End If
            T = New Thread(AddressOf Export)
            T.Start()
        End Sub
    
        Private Sub Export()
            Dim xApp = New Excel.Application
            Dim xBook As Excel.Workbook
            Dim xSheet As New Excel.Worksheet
            Dim charts As Object
            Me.Cursor = Cursors.WaitCursor
            Try
                xBook = xApp.Workbooks.Add(Application.StartupPath & "TempletsMonthly Short Ship Analysis Report.xlt")
                'one plant site one sheet
                For i As Integer = 1 To ds.Tables.Count - 1
                    xSheet = xBook.Worksheets(i)
                    xSheet.Name = ds.Tables(i).TableName
                    xSheet.Activate()
                    xSheet.Application.WindowState = Excel.XlWindowState.xlMaximized
                    xSheet.Cells.NumberFormatLocal = "@" '數值型轉字符串,防止出現6.54655E+11
                    xApp.DisplayAlerts = False
    
                    'data
                    '------------------------------------------------------------------------------------
                    Dim data(ds.Tables(i).Rows.Count + 1, 3) As Object
                    Dim j As Integer
                    Dim qty As Integer = 0
                    For j = 0 To ds.Tables(i).Rows.Count - 1
                        xSheet.Range("A3").Resize(1, 3).Insert(Shift:=Excel.XlDirection.xlDown)
                        data(j, 0) = ds.Tables(i).Rows(j).Item("reason")
                        data(j, 1) = ds.Tables(i).Rows(j).Item("qty")
                        data(j, 2) = ds.Tables(i).Rows(j).Item("percentage")
                        qty += ds.Tables(i).Rows(j).Item("qty")
                    Next
                    data(j, 0) = "Total:"
                    data(j, 1) = qty
                    data(j, 2) = IIf(qty > 0, "100.00%", "0.00%")
                    xSheet.Range("A3").Resize(1, 3).Delete()
                    xSheet.Range("A2").Resize(ds.Tables(i).Rows.Count + 1, 3).Value = data
                    '------------------------------------------------------------------------------------
    
                    'charts
                    '------------------------------------------------------------------------------------
                    Dim height As Integer = xSheet.Range("A1").Resize(4 + ds.Tables(i).Rows.Count, 1).Height
                    charts = xSheet.ChartObjects.Add(0, height, 900, 350).Chart
                    charts.SetSourceData(Source:=xSheet.Range("A2").Resize(ds.Tables(i).Rows.Count, 2))
                    With charts
                        .HasTitle = True
                        .ChartTitle.Characters.Text = ds.Tables(i).TableName + "廠按原因縮數情況表"
                        With .ChartTitle.Font
                            .Name = "新細明體"
                            .Size = 12
                            .Strikethrough = False
                            .Superscript = False
                            .Subscript = False
                            .OutlineFont = False
                            .Shadow = False
                            .Underline = Excel.XlUnderlineStyle.xlUnderlineStyleNone
                            .ColorIndex = 5
                            .Background = Excel.Constants.xlAutomatic
                        End With
                        .Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary).HasTitle = False
                        .Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary).HasTitle = False
                        .HasLegend = False
                        'show the data value
                        .ApplyDataLabels(AutoText:=True, LegendKey:=False, HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False)
                        'X Coordinate
                        .Axes(Excel.XlAxisType.xlCategory).TickLabels.AutoScaleFont = True
                        With .Axes(Excel.XlAxisType.xlCategory).TickLabels.Font
                            .Name = "Arial"
                            .FontStyle = "標準"
                            .Size = 8
                            .Strikethrough = False
                            .Superscript = False
                            .Subscript = False
                            .OutlineFont = False
                            .Shadow = False
                            .Underline = Excel.XlUnderlineStyle.xlUnderlineStyleNone
                            .ColorIndex = Excel.Constants.xlAutomatic
                            .Background = Excel.Constants.xlAutomatic
                        End With
                    End With
                    '------------------------------------------------------------------------------------
                Next
    
    
    
                xApp.Range("A1").Select()
                xApp.Visible = True
                xApp.Caption = "Bogart Report"
                xApp.ActiveWindow.Caption = "Monthly Short Ship Analysis Report"
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            Finally
                xBook = Nothing
                xApp = Nothing
                Me.Cursor = Cursors.Default
            End Try
        End Sub

  • 相关阅读:
    Java中last_insert_id的使用
    Java上传视频
    Java创建Excel-DEMO
    导出excel表格
    Java导入excel并保存到数据库
    Java基础13一异常
    Java基础12一IO流
    腾讯云-等保要求
    云安全等保项目服务内容及云安全产品清单-(腾讯云部分)
    《网络风险及网络安全》培训总结
  • 原文地址:https://www.cnblogs.com/vinsonLu/p/3473375.html
Copyright © 2011-2022 走看看