Dim excelapp As Excel.Application = Nothing
Dim workbook As Excel.Workbook = Nothing
Dim worksheet As Excel.Worksheet = Nothing
Dim range As Excel.Range = Nothing
Dim dt As DataTable = Nothing
Try
DBCONNECT.DB_CONNECT()
Dim sb = GetSearchSql()
sb.AppendLine("ORDER BY")
sb.AppendLine(" KOUBAN_YOU_TRN.KOUBAN_EDA_NO,")
sb.AppendLine(" KOUBAN_YOU_TRN.KOUBAN_YOU_NO")
Dim records As SqlDataReader = DBCONNECT.ExecuteReader(sb.ToString, GetSearchPatameter().ToArray)
dt = DBCONNECT.ConvertDataReaderToDataTable(records)
Dim result As IEnumerable(Of IGrouping(Of String, DataRow)) = dt.Rows.Cast(Of DataRow)().GroupBy(Function(dr) dr("KOUBAN_EDA_NO").ToString())
Dim kankyomstentity = KankyoMstSql.GetKankyoInfo()
If kankyomstentity Is Nothing Then
MessageBox.Show(String.Format(MessageConst.DataNotFoundError, "工番输入检查列表"), "通知")
Return
End If
Dim filepath = Path.Combine(kankyomstentity.TEMP_PATH, TempFileConst.TEMP_KOUBAN_CHECK_LIST)
If Not File.Exists(filepath) Then
MessageBox.Show(MessageConst.ExcelTempFileNotFoundError, "通知")
Return
End If
excelapp = New Excel.Application With {
.Visible = True,
.DisplayAlerts = False
}
workbook = excelapp.Workbooks.Add(filepath)
Dim templateSheet As Excel.Worksheet = DirectCast(workbook.Sheets(1), Excel.Worksheet)
For Each group As IGrouping(Of String, DataRow) In result
Dim groupCount As Integer = group.Count()
Dim data(groupCount - 1, dt.Columns.Count - 1) As Object
Dim rowindex As Integer = 0
For Each dr As DataRow In group
Dim colindex As Integer = 0
data(rowindex, colindex) = dr("KOUBAN_YOU_NO").ToString()
colindex += 1
data(rowindex, colindex) = dr("ITEM_SEKKEI_CODE").ToString()
colindex += 1
data(rowindex, colindex) = dr("ITEM_NAME").ToString()
colindex += 1
data(rowindex, colindex) = dr("ITEM_KATA").ToString()
colindex += 1
data(rowindex, colindex) = dr("ITEM_ZAIMEKER").ToString()
colindex += 1
data(rowindex, colindex) = dr("ITEM_SU").ToString()
rowindex += 1
Next
templateSheet.Copy(After:=workbook.Sheets(workbook.Sheets.Count))
worksheet = DirectCast(workbook.Sheets(workbook.Sheets.Count), Excel.Worksheet)
Dim firstRow As DataRow = group.First()
worksheet.Name = firstRow("KOUBAN_NO").ToString + "_" + group.Key.ToString()
worksheet.Range("C4").Value = firstRow("KOUBAN_NO")
worksheet.Range("C5").Value = firstRow("KOUBAN_EDA_NO")
worksheet.Range("E4").Value = firstRow("JYUCHU_ITEM_NAME")
worksheet.Range("E5").Value = firstRow("KOUBAN_EDA_NAME")
worksheet.Range("E6").Value = firstRow("JYUCHU_SU")
worksheet.Range("K6").Value = Date.Now.ToString("yyyy/MM/dd")
range = worksheet.Range("B9")
range.Resize(groupCount, dt.Columns.Count).Value = data
Next
DirectCast(workbook.Sheets(1), Excel.Worksheet).Delete()
DirectCast(workbook.Sheets(1), Excel.Worksheet).Delete()
Catch ex As Exception
MessageBox.Show(String.Format(MessageConst.ProcessFailedError, "出力"), "通知")
Console.WriteLine(ex.Message)
Console.WriteLine(ex.StackTrace)
Finally
DBCONNECT.DB_DISCONNECT()
If range IsNot Nothing Then Utils.ReleaseComObject(range)
If worksheet IsNot Nothing Then Utils.ReleaseComObject(worksheet)
If workbook IsNot Nothing Then Utils.ReleaseComObject(workbook)
If excelapp IsNot Nothing Then Utils.ReleaseComObject(excelapp)
End Try