Option Strict Off
Imports System.Data.SqlClient
Imports Microsoft.Office.Interop.Excel.XlUnderlineStyle
Imports Microsoft.Office.Interop.Excel.Constants
Imports Microsoft.Office.Interop.Excel.XlBordersIndex
Imports Microsoft.Office.Interop.Excel.XlLineStyle
Imports Microsoft.Office.Interop.Excel.XlBorderWeight
Imports Microsoft.Office.Interop.Excel.XlThemeFont
Imports Microsoft.Office.Interop.Excel.XlThemeColor
Imports Microsoft.Office.Interop.Excel.XlWindowState
Public Class 導出成EXCEL
    Dim conn As New SqlConnection
    Dim da As New SqlDataAdapter
    Dim cmd As New SqlCommand
    Dim ds As New DataSet : Dim ds1 As New DataSet : Dim ds2 As New DataSet : Dim ds3 As New DataSet
    Dim dr As SqlDataReader
    Dim N1 As Integer : Dim N2 As Integer
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
    Dim 位置1 As String : Dim KI As Integer = 0
    Private Sub Set_DGV1載入前設定()
        DataGridView1.DataSource = Nothing : ds.Clear()
        DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
        DataGridView1.ColumnHeadersHeight = 25
        DataGridView1.AllowUserToAddRows = False
        If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
    End Sub
    Private Sub Set_DGV1載入後設定()
        cmd.Connection = conn : cmd.CommandText = SQL1 : da.SelectCommand = cmd : da.Fill(ds) : DataGridView1.DataSource = ds.Tables(0) : conn.Close()
    End Sub
    Private Sub Set_清單1()
        Set_DGV1載入前設定() : SQL1 = 列印用SQL : Set_DGV1載入後設定()
    End Sub
    Private Sub Set_格式設定()
        DataGridView1.Visible = False
    End Sub
    Private Sub 導出成EXCEL_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FormBorderStyle = FormBorderStyle.SizableToolWindow : ControlBox = False
        Set_清單1() : Set_格式設定()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        列印用SQL = "" : Me.Close()
    End Sub
    Private Shared Function NewMethod(xlBook As Microsoft.Office.Interop.Excel.Workbook) As Microsoft.Office.Interop.Excel.Worksheet
        Return CType(xlBook.Worksheets.Add, Microsoft.Office.Interop.Excel.Worksheet)
    End Function
    Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
        xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
        xlApp.Visible = True
        xlApp.DisplayAlerts = True
        xlApp.Application.WindowState = xlMaximized
        xlBook = xlApp.Workbooks.Add
        '----------------------------------------------------------------------------------------------------------------------
        xlSheet = NewMethod(xlBook)
        If xlApp.Sheets(1).Name = "工作表2" Then
            xlApp.Sheets("工作表2").Select : xlApp.Sheets("工作表2").Name = "考勤資料"
        Else
            xlApp.Sheets("sheet2").Select : xlApp.Sheets("sheet2").Name = "考勤資料"
        End If
        xlBook.Activate()
        xlSheet.Activate()

        xlSheet.Cells(1, 1) = "东莞楠晋鞋业有限公司考勤" : xlSheet.Cells(2, 1) = "员工资料" : xlSheet.Cells(2, 3) = "考勤资料" : xlSheet.Cells(2, 5) = "第(1)班"
        xlSheet.Cells(2, 8) = "第(2)班" : xlSheet.Cells(2, 11) = "第(3)班" : xlSheet.Cells(2, 14) = "上班合计" : xlSheet.Cells(3, 1) = "序号" : xlSheet.Cells(3, 2) = "员工姓名"
        xlSheet.Cells(3, 3) = "出勤日期" : xlSheet.Cells(3, 4) = "星期" : xlSheet.Cells(3, 5) = "上班" : xlSheet.Cells(3, 6) = "下班" : xlSheet.Cells(3, 7) = "合计"
        xlSheet.Cells(3, 8) = "上班" : xlSheet.Cells(3, 9) = "下班" : xlSheet.Cells(3, 10) = "合计" : xlSheet.Cells(3, 11) = "上班" : xlSheet.Cells(3, 12) = "下班"
        xlSheet.Cells(3, 13) = "合计" : xlSheet.Cells(3, 14) = "上班时长" : xlSheet.Cells(3, 15) = "应上班"

        For i As Integer = 0 To DataGridView1.Rows.Count - 1
            xlSheet.Cells(i + 4, 1) = i + 1
            xlSheet.Cells(i + 4, 2) = DataGridView1.Rows(i).Cells("員工名稱").Value
            xlSheet.Cells(i + 4, 3) = DataGridView1.Rows(i).Cells("出勤日期").Value
            xlSheet.Cells(i + 4, 4) = DataGridView1.Rows(i).Cells("星期").Value
            xlSheet.Cells(i + 4, 5) = DataGridView1.Rows(i).Cells("第1班上班").Value
            xlSheet.Cells(i + 4, 6) = DataGridView1.Rows(i).Cells("第1班下班").Value
            xlSheet.Cells(i + 4, 7) = DataGridView1.Rows(i).Cells("第1班合計").Value
            xlSheet.Cells(i + 4, 8) = DataGridView1.Rows(i).Cells("第2班上班").Value
            xlSheet.Cells(i + 4, 9) = DataGridView1.Rows(i).Cells("第2班下班").Value
            xlSheet.Cells(i + 4, 10) = DataGridView1.Rows(i).Cells("第2班合計").Value
            xlSheet.Cells(i + 4, 11) = DataGridView1.Rows(i).Cells("第3班上班").Value
            xlSheet.Cells(i + 4, 12) = DataGridView1.Rows(i).Cells("第3班下班").Value
            xlSheet.Cells(i + 4, 13) = DataGridView1.Rows(i).Cells("第3班合計").Value
            xlSheet.Cells(i + 4, 14) = DataGridView1.Rows(i).Cells("上班時長").Value
            xlSheet.Cells(i + 4, 15) = DataGridView1.Rows(i).Cells("應上班").Value
            KI = i + 5
        Next i

        xlSheet.Cells(KI, 2) = KI - 4 & "条记录"
        xlSheet.Cells(KI, 7) = "=SUM(G4:G" & KI - 1 & ")"
        xlSheet.Cells(KI, 10) = "=SUM(J4:J" & KI - 1 & ")"
        xlSheet.Cells(KI, 13) = "=SUM(M4:M" & KI - 1 & ")"
        xlSheet.Cells(KI, 14) = "=SUM(N4:N" & KI - 1 & ")"
        xlSheet.Cells(KI, 15) = "=SUM(O4:O" & KI - 1 & ")"

        AA(xlApp, xlSheet)

        If xlApp.Sheets(2).Name = "工作表1" Then : xlApp.Sheets("工作表1").Delete : Else : xlApp.Sheets("sheet1").Delete : End If
        xlSheet.PageSetup.PrintArea = ""
        xlApp.Cells.Select()
        xlApp.Application.WindowState = xlMinimized
        MsgBox("列印完成")
        Me.Close()
    End Sub

    Private Sub AA(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
        xlSheet.Cells.Select()
        With myExcel.Selection.Font : .Name = "Tahoma" : .Size = 10 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
            .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With

        xlSheet.Columns("A:A").Select : myExcel.Selection.ColumnWidth = 3
        xlSheet.Columns("B:B").Select : myExcel.Selection.ColumnWidth = 7
        xlSheet.Columns("C:C").Select : myExcel.Selection.ColumnWidth = 9
        xlSheet.Columns("D:D").Select : myExcel.Selection.ColumnWidth = 4
        xlSheet.Columns("E:O").Select : myExcel.Selection.ColumnWidth = 9
        Dim DDS As String
        DDS = KI & ":" & KI
        xlSheet.Rows(DDS).Select : myExcel.Selection.RowHeight = 31

        xlSheet.Columns("A:A").Select
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With

        xlSheet.Columns("C:C").Select
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With

        xlSheet.Columns("D:D").Select
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With

        xlSheet.Columns("E:O").Select
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With

        xlSheet.Columns("G:G").Select : myExcel.Selection.Style = "Comma"
        xlSheet.Columns("J:J").Select : myExcel.Selection.Style = "Comma"
        xlSheet.Columns("M:O").Select : myExcel.Selection.Style = "Comma"

        xlSheet.Range("C" & KI & ":O" & KI & "").Select() : myExcel.Selection.NumberFormatLocal = "#,##0.0"
        xlSheet.Range("C" & KI & ":O" & KI & "").Select()
        With myExcel.Selection : .HorizontalAlignment = xlRight : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With

        xlSheet.Range("A2:B2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("C2:D2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("E2:G2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("H2:J2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("K2:M2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("N2:O2").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        xlSheet.Range("A1:O1").Select()
        With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
        With myExcel.Selection.Font : .Size = 20 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
            .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With

        xlSheet.Range("A2:O3").Select()
        With myExcel.Selection.Interior : .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorDark1 : .TintAndShade = -0.149998474074526
            .PatternTintAndShade = 0 : End With

        xlSheet.Range("A" & KI & ":O" & KI & "").Select()
        With myExcel.Selection.Interior : .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorDark1 : .TintAndShade = -0.149998474074526
            .PatternTintAndShade = 0 : End With

        xlSheet.Range("A2:O" & KI & "").Select()
        myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
        With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
        With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
        With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
        With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
        With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With

        xlSheet.Rows("4:4").Select : myExcel.ActiveWindow.FreezePanes = True
        xlSheet.Rows("3:3").Select : myExcel.Selection.AutoFilter
        myExcel.ActiveWindow.DisplayGridlines = False
        xlSheet.Rows("3:3").Select : myExcel.Selection.RowHeight = 31
        With myExcel.Selection : .VerticalAlignment = xlTop : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
            .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With
        xlSheet.Range("T9").Select()
    End Sub
End Class