Public Class ReportDaily
    Inherits System.Web.UI.Page

    Private Const CON_EXCEL_NAME As String = "集計結果報告書(日計)"

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Page.Header.Title = MyProperty.システムＭ.選挙コード名称 + MyConstant.管理画面タイトル

            ' 投票所Mを取得する
            Dim ds As DataSet1 = New DataSet1
            Using myDataBase As MyDataBase = New MyDataBase
                myDataBase.Fill投票所M全件(ds)
            End Using

            Dim dt As New DataTable()
            dt.Columns.Add("Code")
            dt.Columns.Add("Name")
            dt.Rows.Add(MyConstant.全投票所コード, "全投票所")

            For Each row As DataSet1.投票所MRow In ds.投票所M
                dt.Rows.Add(row.投票所コード.Trim(), row.投票所名.Trim())
            Next

            DropDownList1.DataSource = dt
            DropDownList1.DataTextField = "Name"   ' 表示される列
            DropDownList1.DataValueField = "Code"  ' 内部的な値の列
            DropDownList1.DataBind()

        End If
    End Sub

    Protected Sub BtnDownload_Click(sender As Object, e As EventArgs) Handles BtnDownload.Click
        ' 選挙Mを取得する
        Dim ds As DataSet1 = New DataSet1
        Using myDataBase As MyDataBase = New MyDataBase
            myDataBase.Fill選挙M(ds)
        End Using

        '投票所の選択値・選択した名称
        Dim votePlaceValue As String = DropDownList1.SelectedValue
        Dim votePlaceText As String = DropDownList1.SelectedItem.Text

        ' ドロップダウンで全投票所が選択されていたら、
        ' 「全投票所フォルダを集計対象とする」にチェックを入れる（既存処理を流用）
        If DropDownList1.SelectedValue.Equals(MyConstant.全投票所コード) Then
            ChkAll.Checked = True
        Else
            ChkAll.Checked = False
        End If

        ' 日付ごとの投票数を取得する
        For Each row As DataSet1.選挙MRow In ds.選挙M
            Using myFileIO As MyFile = New MyFile
                'myFileIO.Fill日時投票数(row.選挙ID.TrimEnd, ds, False, ChkAll.Checked)
                myFileIO.Fill日時投票数(row.選挙ID.TrimEnd, ds, False, votePlaceValue)
            End Using
        Next

        ' エクセルをサーバのTempフォルダに作成
        Dim saveFilePath As String = MyProperty.TEMPフォルダパス + CON_EXCEL_NAME + DateTime.Now.ToString("yyyyMMddHHmmss") + MyConstant.TEMPエクセル拡張子
        Dim baseFilePath As String = MyProperty.EXCELテンプレートフォルダパス + CON_EXCEL_NAME + MyConstant.エクセル拡張子
        Using myExcel As MyExcel = New MyExcel()
            myExcel.Output集計結果報告書日計(saveFilePath, baseFilePath, ds, False, votePlaceText)
        End Using

        ' エクセルをクライアントにダウンロード
        DownloadExcel(saveFilePath)

    End Sub

    Private Sub DownloadExcel(ByVal filePath As String)
        ' Responseクリア
        Response.Clear()
        ' HTTPヘッダー情報設定
        Dim fileName As String = MyProperty.システムＭ.選挙コード
        If Not ChkAll.Checked Then
            'fileName += MyProperty.システムＭ.投票所コード
            fileName += DropDownList1.SelectedValue
        Else
            fileName += MyConstant.全投票所コード
        End If
        fileName += CON_EXCEL_NAME + DateTime.Now.ToString("yyyyMMddHHmm") + MyConstant.エクセル拡張子
        Response.AppendHeader("Content-Disposition", "Attachment; filename*=utf-8''" + Server.UrlEncode(fileName))
        Response.ContentType = "application/msexcel"
        ' ファイル書込
        Response.WriteFile(filePath)
        ' レスポンス終了
        Response.End()
    End Sub
End Class