Files
ECO2/ArinWarev1/Forms_Basic/Frm_import.vb
2019-10-24 21:24:21 +09:00

715 lines
29 KiB
VB.net

Public Class Frm_Import
Dim RecordCount As Long
Dim TableList As DataTable
Dim IsExcel As Boolean = False
Private Sub Frm_Import_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'//테이블목록 추가
Add_Tablelist()
Me.Button2.Enabled = False '//실행버튼 사용불가
Me.IsExcel = False
End Sub
Private Sub Add_Tablelist()
Dim TabName As String
Dim TabDesc As String = ""
Dim Sort As String = ""
Me.TableList = New DataTable
Me.TableList.Columns.Add("Desc")
Me.TableList.Columns.Add("Name")
Me.TableList.Columns.Add("Sort")
Me.TableList.Columns.Add("Cnt")
For Each Dt As DataTable In DSET1.Tables
TabName = Dt.TableName
TabDesc = ""
Select Case TabName.ToUpper
'Case "TBL_BUHA"
'TabDesc = "부하"
'Sort = "00"
Case "TBL_BUNBAE"
TabDesc = "냉방분배"
Sort = "00"
'Case "TBL_COMMON"
'TabDesc = "공용코드"
'Sort = "00"
Case "TBL_DESC"
TabDesc = "건물개요"
Sort = "00"
Case "TBL_KONGJO"
TabDesc = "공조"
Sort = "00"
Case "TBL_KONGKUB"
TabDesc = "난방공급"
Sort = "00"
Case "TBL_MYOUN"
TabDesc = "입력면"
Sort = "00"
Case "TBL_NANBANGKIKI"
TabDesc = "난방기기"
Sort = "00"
Case "TBL_NANGBANGKIKI"
TabDesc = "냉방기기"
Sort = "00"
Case "TBL_NBUNBAE"
TabDesc = "난방분배"
Sort = "00"
Case "TBL_NEW"
TabDesc = "신재생및열병합"
Sort = "00"
'Case "TBL_PROFILE"
' TabDesc = "프로필"
' Sort = "00"
Case "TBL_ZONE"
TabDesc = "입력존"
Sort = "00"
Case "TBL_YK"
TabDesc = "열관류율(목록)"
Sort = "00"
Case "TBL_YKDETAIL"
TabDesc = "*열관류율(내역)"
Sort = "00"
'Case "TBL_WEATHER"
' TabDesc = "기상데이터(목록)"
' Sort = "00"
'Case "WEATHER_CHA"
'TabDesc = "*기상데이터(차양)"
'Sort = "00"
'Case "WEATHER_ILSA"
' TabDesc = "*기상데이터(일사)"
' Sort = "00"
'Case "WEATHER_SUPDO"
'TabDesc = "*기상데이터(습도)"
'Sort = "00"
'Case "WEATHER_ILSA"
'TabDesc = "*기상데이터(일사)"
'Sort = "00"
End Select
If TabDesc <> "" Then Me.TableList.Rows.Add(New String() {TabDesc, TabName, Sort})
Next
End Sub
Private Sub Frm_Import_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Me.DialogResult = Windows.Forms.DialogResult.Cancel
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If radi.Checked Then
File_Open()
Me.Button2.Enabled = True
Else
'//내보내기 기능
File_Save()
Me.Button2.Enabled = True
End If
End Sub
Private Sub File_Open()
Dim Od As New OpenFileDialog
Od.FileName = "c:\out.txt"
Od.Filter = "탭으로 분리된 텍스트파일(*.txt)|*.txt|Ms Excel(*.xls)|*.xls"
Od.FilterIndex = 0
If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
Me.tb_file.Text = Od.FileName
Me.IsExcel = IIf(Od.FilterIndex = 1, False, True)
'//테이블리스트의 데이터갯수 초기화
For Each Dr As DataRow In Me.TableList.Rows
Dr("cnt") = 0
Next
Me.TableList.AcceptChanges()
'//혹시 연속으로 열경우를 대비해서 초기화한다.
Select Case Od.FilterIndex
Case 1 '//텍스트파일
Dim Table As String
Dim BUf As String = My.Computer.FileSystem.ReadAllText(Me.tb_file.Text, System.Text.Encoding.Default)
For Each B As String In BUf.Split(CChar(vbCrLf))
If B.Trim <> "" AndAlso B.Trim.Substring(0, 1) <> "#" Then
Table = B.Split(CChar(vbTab))(0)
'//해당 테이블 이름을 테이블 리스트에 찾아서 카운터를 누적시킨다.
Dim DR() As DataRow = Me.TableList.Select("name='" & Table.Trim & "'")
If DR.GetUpperBound(0) = 0 Then
Try
DR(0)("cnt") = Val(DR(0)("cnt")) + 1
Catch ex As Exception
DR(0)("cnt") = 1
End Try
End If
End If
Next
Case 2
'//엑셀데이터에서 정보를 얻어와야한다.
Dim xlApp As Excel.Application = New Excel.Application ' CreateObject("Excel.Application")
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open(Me.tb_file.Text)
Dim xlSheet1 As Excel.Worksheet = xlBook.Worksheets(1) '//첫번째 시트로고정
Dim Rng As Excel.Range = xlSheet1.Range("A1") '//Offset으로사용할것이므로 0,0셀을 선택한다
'//줄과 열의 갯수를 가져옵니다.
Dim rowCount As String = Rng.Offset(0, 4).Value '//줄수를 입력(나중에 불러올때 가져올범위를 대략 판단)
Dim ColCount As String = Rng.Offset(0, 5).Value
If rowCount.Trim = "" OrElse rowCount = "0" Then
Dim V As String = InputBox("전체줄의 갯수를 입력하세요", "데이터갯수입력", 1000)
If V = "" Then
MsgBox("불러올 줄수를 확인할 수 없습니다", MsgBoxStyle.Critical, "확인")
Return
End If
If IsNumeric(V) = False Then
MsgBox("숫자만 입력가능합니다", MsgBoxStyle.Critical, "확인")
Return
End If
rowCount = V
End If
If rowCount.Trim = "" OrElse rowCount = "0" Then
ColCount = 60 '//60개를 넘지는 않으므로(아마두?)
End If
'//범위가 지정되었으므로 데이터를 확인한다.
'//데이터의 시작줄은 항상 5번이다.
Dim Tabname As String = ""
Dim As New ArrayList
Dim z_cnt As Integer = 0
For r As Integer = 5 To rowCount
Try
Tabname = Rng.Offset(r, 0).Value.ToString.Trim '//0번째열은 항상 테이블 이름이 오도록한다
Catch ex As Exception
Tabname = ""
End Try
If Tabname = "" OrElse Tabname.Trim.ToUpper = "TABLE" Then '//이건 테이블을 제목줄이다
Else '//테이블이름으로 판단하고 해당 리스트를 찾아서 값을 누적시킴
'//해당 테이블 이름을 테이블 리스트에 찾아서 카운터를 누적시킨다.
Dim DR() As DataRow = Me.TableList.Select("name='" & Tabname & "'")
If DR.GetUpperBound(0) = 0 Then
Try
DR(0)("cnt") = Val(DR(0)("cnt")) + 1
Catch ex As Exception
DR(0)("cnt") = 1
End Try
End If
End If
Next
'//Dispos Excel Object
xlBook.Close()
xlApp.Application.Quit()
xlApp.Quit()
xlApp = Nothing
xlBook = Nothing
xlSheet1 = Nothing
End Select
Me.ListView1.Items.Clear() '//리스트뷰클리어
Dim lv As ListViewItem
For Each dr As DataRow In Me.TableList.Select("", "sort") '//정렬시켜서 가져옴
If DSET1.Tables(dr("name").ToString).Rows.Count > 0 Then
lv = Me.ListView1.Items.Add(dr("desc").ToString) '//테이블설명
lv.SubItems.Add(dr("cnt").ToString) '//레코드숫자
lv.SubItems.Add(dr("name").ToString) '//테이블이름
End If
Next
End Sub
Private Sub File_Save()
DSET1.AcceptChanges()
DSETR1.AcceptChanges()
Dim sd As New SaveFileDialog
sd.FileName = "c:\out.txt"
sd.Filter = "탭으로 분리된 텍스트파일(*.txt)|*.txt|Ms Excel(*.xls)|*.xls"
sd.FilterIndex = 0
If sd.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
Me.tb_file.Text = sd.FileName
Me.IsExcel = IIf(sd.FilterIndex = 1, False, True)
Me.ListView1.Items.Clear() '//기존의 목록제거
Dim Lv As ListViewItem
For Each dr As DataRow In Me.TableList.Select("", "sort") '//정렬시켜서 가져옴
If DSET1.Tables(dr("name")).Rows.Count > 0 Then
Lv = Me.ListView1.Items.Add(dr("desc")) '//테이블설명
Lv.SubItems.Add(DSET1.Tables(dr("name")).Rows.Count) '//레코드숫자
Lv.SubItems.Add(dr("name")) '//테이블이름
End If
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If MsgBox("실행하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
If Me.radi.Checked Then
If My.Computer.FileSystem.FileExists(Me.tb_file.Text) = False Then
MsgBox("해당파일이 존재하지않아서 가져올 수 없습니다", MsgBoxStyle.Critical, "확인")
Me.Button2.Enabled = False
Return
End If
If Me.IsExcel Then
InPutXls()
Else
INput()
End If
Else
If Me.IsExcel Then
OutputXLS()
Else
OutPut()
End If
End If
End Sub
Private Function Get_Listview(ByVal Tabname As String) As ListViewItem
Dim Tname As String
Dim R As ListViewItem = Nothing
For Each Lv As ListViewItem In Me.ListView1.Items
Tname = Lv.SubItems(2).Text
If Tname.ToUpper.Trim = Tabname.ToUpper.Trim Then
R = Lv
Exit For
End If
Next
Return R
End Function
Private Sub InPutXls()
'//가져오는 영역의 데이터 클리어
Work_msg("저장영역 데이터확인중...")
For Each Lview As ListViewItem In Me.ListView1.Items
If Lview.Checked And Me.chk_deldata.Checked Then ' '//삭제명령이 잇엇다면 삭제를 한다.
Work_msg("데이터 삭제중(" & Lview.SubItems(2).Text & ")")
If DSET1.Tables(Lview.SubItems(2).Text).Columns.IndexOf("code") <> -1 Then '//코드가잇는 개체라면 코드빼고 삭제
For Each Dr As DataRow In DSET1.Tables(Lview.SubItems(2).Text).Select("Code<>'0'")
Dr.Delete()
Next
Else
For Each Dr As DataRow In DSET1.Tables(Lview.SubItems(2).Text).Rows
Dr.Delete()
Next
End If
End If
Next
DSET1.AcceptChanges()
Dim NullCnt As Int16 = 0
Dim mytext1 As String = vbNullString
Dim xlApp As Excel.Application = New Excel.Application ' CreateObject("Excel.Application")
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open(Me.tb_file.Text)
Dim xlSheet1 As Excel.Worksheet = xlBook.Worksheets(1) '//첫번째 시트로고정
Dim Rng As Excel.Range = xlSheet1.Range("A1") '//Offset으로사용할것이므로 0,0셀을 선택한다
'//줄과 열의 갯수를 가져옵니다.
Dim rowCount As String = Rng.Offset(0, 4).Value '//줄수를 입력(나중에 불러올때 가져올범위를 대략 판단)
Dim ColCount As String = Rng.Offset(0, 5).Value
If rowCount.Trim = "" OrElse rowCount = "0" Then
Dim V As String = InputBox("전체줄의 갯수를 입력하세요", "데이터갯수입력", 1000)
If V = "" Then
MsgBox("불러올 줄수를 확인할 수 없습니다", MsgBoxStyle.Critical, "확인")
Return
End If
If IsNumeric(V) = False Then
MsgBox("숫자만 입력가능합니다", MsgBoxStyle.Critical, "확인")
Return
End If
rowCount = V
End If
If rowCount.Trim = "" OrElse rowCount = "0" Then
ColCount = 60 '//60개를 넘지는 않으므로
End If
'//범위가 지정되었으므로 데이터를 확인한다.
'//데이터의 시작줄은 항상 5번이다.
Dim Tabname As String = ""
Dim lv As ListViewItem
Dim As New ArrayList
Dim z_cnt As Integer = 0
For r As Integer = 5 To rowCount
Try
Tabname = Rng.Offset(r, 0).Value.ToString '//0번째열은 항상 테이블 이름이 오도록한다
Catch ex As Exception
Tabname = ""
End Try
If Tabname.Trim.ToUpper = "TABLE" Then '//이건 테이블을 제목줄이다
= New ArrayList '//열제목을 이곳에 모두 넣는다.
For c As Integer = 1 To ColCount
Try
If Rng.Offset(r, c).Value.ToString.Trim <> "" AndAlso Rng.Offset(r, c).Value.ToString.Trim <> "0" Then '//열제목이있다
.Add(Rng.Offset(r, c).Value.ToString.Trim)
End If
Catch ex As Exception
End Try
Next
Else
If .Count > 0 AndAlso Tabname.Trim <> "" Then '//열제목이 설정되어잇어야 돌아가도록
lv = Get_Listview(Tabname)
If lv.Checked Then '//가져오기설정과 테이블이름이 잇어야함
Work_msg("가져오는중(" & Tabname & ")")
Dim Dr As DataRow = DSET1.Tables(Tabname).NewRow
Dr("code") = Format(DSET1.Tables(Tabname).Rows.Count, "0000")
For c As Integer = 1 To .Count
Try
Dr(.Item(c - 1).ToString) = Rng.Offset(r, c).Value
Catch ex As Exception
Dr(.Item(c - 1).ToString) = DBNull.Value
End Try
Next
Try
DSET1.Tables(Tabname).Rows.Add(Dr)
DSET1.Tables(Tabname).AcceptChanges()
z_cnt += 1
Catch ex As Exception
End Try
End If
End If
End If
Next
Work_msg("")
'//Dispos Excel Object
xlBook.Close()
xlApp.Application.Quit()
xlApp = Nothing
xlBook = Nothing
xlSheet1 = Nothing
MsgBox("가져오기완료", MsgBoxStyle.Information, "확인")
Me.Close()
' Process.Start(Me.tb_file.Text)
'Shell(Me.tb_file.Text, AppWinStyle.NormalFocus)
End Sub
Private Sub INput() '//텍스트파일 가져오기
Dim BUf As String = My.Computer.FileSystem.ReadAllText(Me.tb_file.Text, System.Text.Encoding.Default)
Dim Table As String
Dim As String = ""
For Each Lview As ListViewItem In Me.ListView1.Items
If Lview.Checked And Me.chk_deldata.Checked Then ' '//삭제명령이 잇엇다면 삭제를 한다.
Dim TAblename As String = Lview.SubItems(2).Text
If DSET1.Tables(TAblename).Columns.IndexOf("code") <> -1 Then '//코드가잇는 개체라면 코드빼고 삭제
For Each Dr As DataRow In DSET1.Tables(Lview.SubItems(2).Text).Select("Code<>'0'")
Dr.Delete()
Next
Else
For Each Dr As DataRow In DSET1.Tables(Lview.SubItems(2).Text).Rows
Dr.Delete()
Next
End If
End If
Next
DSET1.AcceptChanges()
Dim Lv As ListViewItem
Dim z_cnt As Integer = 0
Dim e_cnt As Integer = 0
For Each B As String In BUf.Split(CChar(vbCrLf)) '//데이터를 실제로 가져온다
If B.Trim <> "" AndAlso B.Trim.Substring(0, 1) <> "#" Then '//주석데이터도제거
Table = B.Split(CChar(vbTab))(0).Trim
Select Case Table.ToUpper
Case "TABLE"
= B.Trim
Case Else
'//해당테이블명이 리뷰에 있는지확인하고 그것의 사용체크가되어있는지확인
Lv = Get_Listview(Table)
If Not Lv Is Nothing Then
If Lv.Checked Then '//사용여부확인
Dim Dr As DataRow = DSET1.Tables(Table).NewRow
Dr("code") = Format(DSET1.Tables(Table).Rows.Count, "0000")
For i As Integer = 1 To B.Split(CChar(vbTab)).GetUpperBound(0)
Try
Dr(.Split(CChar(vbTab))(i)) = B.Split(CChar(vbTab))(i)
Catch ex As Exception
Dr(.Split(CChar(vbTab))(i)) = DBNull.Value
End Try
Next
Try
DSET1.Tables(Table).Rows.Add(Dr)
DSET1.Tables(Table).AcceptChanges()
z_cnt += 1
'Catch sqlex As SqlClient.SqlException
' MsgBox(sqlex.ErrorCode)
Catch ex As Exception
' MsgBox(ex.Message.ToString)
If ex.Message.ToString.IndexOf("고유 값") <> -1 Then
z_cnt += 1
Else
e_cnt += 1
End If
End Try
End If
End If
End Select
End If
Next
DSET1.AcceptChanges()
' MsgBox(DSET1.tbl_zone.Rows.Count)
Dim M As New System.Text.StringBuilder
M.AppendLine(z_cnt & "개의 데이터가 추가됨")
M.AppendLine(e_cnt & "개의 오류발생")
MsgBox(M.ToString, MsgBoxStyle.Information, "OK")
End Sub
'//텍스트파일 내보내기
Private Sub OutPut()
Work_msg("기본정보생성중...")
Dim Wb As New System.Text.StringBuilder
Wb.AppendLine("#### ECO2 Data ####")
Wb.AppendLine("#### Export Time : " & Format(Now, "yyyy-MM-dd HH:mm:ss") & " ####")
Wb.AppendLine("#### Export by Eco2 ####")
Dim Tabname As String = ""
For Each lv As ListViewItem In Me.ListView1.Items
If lv.Checked Then '//체크된것만 내보낸다
Tabname = lv.SubItems(2).Text
Work_msg("내보내는중(" & Tabname & ")")
Wb.Append("table") '///////////////////////
For Each C As System.Data.DataColumn In DSET1.Tables(Tabname).Columns
Wb.Append(vbTab & C.ColumnName)
Next
Wb.Append(vbCrLf)
For Each C As DataRow In DSET1.Tables(Tabname).Rows
Wb.Append(Tabname)
For i As Integer = 0 To DSET1.Tables(Tabname).Columns.Count - 1
'If (Tabname.ToUpper = "TBL_MYOUN") Then
' If DSET1.Tables(Tabname).Columns(i).ColumnName.ToUpper.Trim = "열관류율" Then
' If CSng(C(i)) = 0 Then '//링크값사용
' Dim Dr As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & C("열관류율2") & "'")(0)
' Wb.Append(vbTab & Dr("열관류율").ToString)
' Else '//입력값사용
' Wb.Append(vbTab & C(i).ToString)
' End If
' Else
' Wb.Append(vbTab & C(i).ToString)
' End If
'Else
' Wb.Append(vbTab & C(i).ToString)
'End If
Wb.Append(vbTab & C(i).ToString)
Next
Wb.Append(vbCrLf)
Next
End If
Next
Work_msg("")
My.Computer.FileSystem.WriteAllText(Me.tb_file.Text, Wb.ToString, False, System.Text.Encoding.Default)
If MsgBox("내보내기 완료" & vbCrLf & "파일을 확인하시겠습니까?", _
vbInformation Or vbOK, "확인") = MsgBoxResult.Ok Then
Process.Start(Me.tb_file.Text)
End If
Me.Close()
End Sub
Private Sub OutputXLS()
Dim NullCnt As Int16 = 0
Dim mytext1 As String = vbNullString
Dim xlApp As Excel.Application = New Excel.Application ' CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
xlApp.Visible = False
xlApp.ReferenceStyle = Excel.XlReferenceStyle.xlA1
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Add
Dim xlSheet1 As Excel.Worksheet = xlBook.Worksheets.Add
Work_msg("데이터수 확인중...")
'//전체데이터갯수를 가지고 배열을 정의한다.
Dim Rcnt As Integer = 0
Dim Ccnt As Integer = 0
Dim TabName As String = ""
For Each Lv As ListViewItem In Me.ListView1.Items
If Lv.Checked Then
TabName = Lv.SubItems(2).Text
Rcnt += DSET1.Tables(TabName).Rows.Count
If DSET1.Tables(TabName).Columns.Count > Ccnt Then Ccnt = DSET1.Tables(TabName).Columns.Count
End If
Next
'//제목줄 5줄을포함
'If Ccnt < 5 Then Ccnt = 5
Work_msg("저장영역할당....")
Dim saRet(Rcnt + 50, 52) As String '//여유잇게 할당
For i As Integer = 0 To Rcnt + 10 - 1
For j As Integer = 0 To Ccnt + 5 - 1
saRet(i, j) = ""
Next
Next
Dim Rng As Excel.Range = xlSheet1.Range("A1") '//Offset으로사용할것이므로 0,0셀을 선택한다
Work_msg("기본정보를 내보냅니다....")
'//export title (제목내보내기)
'Rng.Offset(0, 0).Value = "#### ECO2 Data ####"
'Rng.Offset(1, 0).Value = ("#### Export Time : " & Format(Now, "yyyy-MM-dd HH:mm:ss") & " ####")
'Rng.Offset(2, 0).Value = ("#### Export by Eco2 ####")
saRet(0, 0) = "#### ECO2 Data ####"
saRet(1, 0) = ("#### Export Time : " & Format(Now, "yyyy-MM-dd HH:mm:ss") & " ####")
saRet(2, 0) = ("#### Export by Eco2 ####")
'//Export SUbTitle(부가적인정보내보내기)
'Rng.Offset(0, 4).Value = Rcnt + 4 '//줄수를 입력(나중에 불러올때 가져올범위를 대략 판단)
'Rng.Offset(0, 5).Value = Ccnt - 1 '//열수를 입력
saRet(0, 4) = Rcnt + 4 '//줄수를 입력(나중에 불러올때 가져올범위를 대략 판단)
saRet(0, 5) = Ccnt - 1 '//열수를 입력
Dim RowIndex As Integer = 5
Dim ColIndex As Integer = 0
For Each Lv As ListViewItem In Me.ListView1.Items
If Lv.Checked Then
TabName = Lv.SubItems(2).Text
Work_msg("내보내는중(" & TabName & ")")
'Set_ArrayData(Rng, RowIndex, DSET1.Tables(TabName))
Set_ArrayData(saRet, RowIndex, DSET1.Tables(TabName))
End If
Next
Try
My.Computer.FileSystem.DeleteFile(Me.tb_file.Text) '//대상파일이 존재하면 삭제해버림
Catch ex As Exception
End Try
xlSheet1.Range("A1:AZ" & CStr(Rcnt + 10).ToString).Value = saRet
'xlApp.Visible = True
xlBook.Saved = True
'xlSheet1.SaveAs(Me.tb_file.Text)
xlSheet1.SaveAs(Me.tb_file.Text, _
Excel.XlFileFormat.xlExcel7, _
Nothing, Nothing, Nothing, Nothing, _
Nothing, Nothing, Nothing, Nothing)
xlBook.Close()
xlApp.Application.Quit()
xlApp = Nothing
xlBook = Nothing
xlSheet1 = Nothing
Work_msg("")
If MsgBox("내보내기 완료" & vbCrLf & "파일을 확인하시겠습니까?", _
vbInformation Or vbOK, "확인") = MsgBoxResult.Ok Then
Process.Start(Me.tb_file.Text)
End If
Me.Close()
' Process.Start(Me.tb_file.Text)
'Shell(Me.tb_file.Text, AppWinStyle.NormalFocus)
End Sub
Private Sub Set_ArrayData(ByRef Rng As Excel.Range, ByRef RowIndex As Integer, ByVal Dt As DataTable)
RowIndex += 1
Rng.Offset(RowIndex, 0).Value = "table" '//테이블컬럼명을 내보낸다
'//Export ColumnData
For i As Integer = 0 To Dt.Columns.Count - 1
Rng.Offset(RowIndex, i + 1).Value2 = Dt.Columns(i).ColumnName.ToString
Next
'//Export RowData
For Each C As DataRow In Dt.Rows
RowIndex += 1 ': ReDim Preserve saRet(RowIndex, 255)
Rng.Offset(RowIndex, 0).Value = Dt.TableName
For i As Integer = 0 To Dt.Columns.Count - 1
Rng.Offset(RowIndex, i + 1).Value2 = C(i).ToString
Next
Next
End Sub
Private Sub Set_ArrayData(ByRef Rng(,) As String, ByRef RowIndex As Integer, ByVal Dt As DataTable)
RowIndex += 1
Rng(RowIndex, 0) = "table" '//테이블컬럼명을 내보낸다
'//Export ColumnData
For i As Integer = 0 To Dt.Columns.Count - 1
Rng(RowIndex, i + 1) = Dt.Columns(i).ColumnName.ToString
Next
'//Export RowData
For Each C As DataRow In Dt.Rows
RowIndex += 1 ': ReDim Preserve saRet(RowIndex, 255)
Rng(RowIndex, 0) = Dt.TableName
For i As Integer = 0 To Dt.Columns.Count - 1
Rng(RowIndex, i + 1) = C(i).ToString
Next
Next
End Sub
Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'//d요부분만 추가됫어요
Me.Close()
End Sub
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
Dim a As Graphics = e.Graphics
Dim b As New Drawing2D.LinearGradientBrush(New Rectangle(0, 0, Me.Width, 500), Color.WhiteSmoke, _
Color.DarkGray, Drawing2D.LinearGradientMode.Vertical)
a.FillRectangle(b, 0, 0, Me.Width, Me.Height)
'a.FillRectangle(b, Me.Width, 0, Me.Width, 30)
b.Dispose()
a.Dispose()
End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet1 As Excel.Worksheet
xlApp = New Excel.Application ' CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open("c:\out.xls")
xlSheet1 = xlBook.Worksheets(1) '//첫번째 시트로고정
Dim Rng As Excel.Range = xlSheet1.Range("A1") '//Offset으로사용할것이므로 0,0셀을 선택한다
xlApp.Visible = True
MsgBox("가져오기완료", MsgBoxStyle.Information, "확인")
'//Dispos Excel Object
'xlBook.displayalerts = False
xlBook.Saved = True
xlBook.Close()
xlApp.Application.Quit()
xlApp = Nothing
xlBook = Nothing
xlSheet1 = Nothing
Me.Close()
' Process.Start(M
End Sub
End Class