private void Store_DB_Click(object sender, EventArgs e) { newRow = show_loaded_data.RowCount - 1; newCol = show_loaded_data.ColumnCount; int dataCounts = newCol * newRow; object[] data = new object[dataCounts]; Data_save.save_btn_clicked = false; bool PK_value_check = true; newRow = show_loaded_data.RowCount - 1; newCol = show_loaded_data.ColumnCount; int Counts = newCol * newRow; object[] inputs = new object[Counts]; int index = 0; //PK 값들 다 채워져 있는지 체크 for (int r = 0; r < newRow; r++) { for (int c = 0; c < newCol; c++) { inputs[index] = show_loaded_data.Rows[r].Cells[c].Value; if (c > 0 && c < 5) { if (inputs[index] == null || inputs[index].ToString() == "") { PK_value_check = false; } } index++; } } if (PK_value_check == false) { MessageBox.Show($"UNIT, FLUID, SEQUENCE NUMBER, PIPING SPEC. 열을 채워야 합니다."); } else { object[,] data2 = new object[newRow, newCol]; index = 0; for (int r = 0; r < newRow; r++) { for (int c = 0; c < newCol; c++) { data[index] = show_loaded_data.Rows[r].Cells[c].Value; data2[r, c] = show_loaded_data.Rows[r].Cells[c].Value; //Debug.WriteLine("data[" + r + "," + c + "] = " + data2[r, c]); index++; } } List <int> pickedRows = dataCheck(data2, newRow); if (pickedRows.Count == 0) // 겹치는 PK 값이 없다면 { Data_save save = new Data_save(); save.ShowDialog(); } else // 겹치는 PK 값이 있다면 { foreach (int r in pickedRows) { for (int c = 1; c < 5; c++) { show_loaded_data.Rows[r].Cells[c].Style.BackColor = System.Drawing.Color.Pink; } } MessageBox.Show("값이 겹치는 행이 있습니다."); } } // PK값 체크를 통과하고 저장 버튼이 눌리면 if (Data_save.save_btn_clicked) { bool success = false; Linelist_WCF.Service1Client client = new Linelist_WCF.Service1Client(); success = client.Put_data_into_DB(data, newRow, newCol, Data_save.user_name_input, Data_save.date_input, Data_save.comment_input); if (success) { MessageBox.Show($"데이터를 성공적으로 저장했습니다."); } else { MessageBox.Show($"DB 연결 실패"); } } else { Debug.WriteLine("저장 안됌"); } }
private void Excel_Button_Click(object sender, EventArgs e) { //엑셀 변수 선언 Excel.Application xlApp = null; Excel.Workbook xlWorkbook = null; Excel.Worksheet xlWorksheet = null; object[,] data; //파일 선택 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "엑셀 파일 (*.xlsx)|*.xlsx|엑셀 파일 (*.xls)|*.xls"; //파일을 열수 있는지 확인 if (ofd.ShowDialog() == DialogResult.OK) { try { xlApp = new Excel.Application(); xlWorkbook = xlApp.Workbooks.Open(ofd.FileName);// 엑셀 파일 가져오기 xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1); range = xlWorksheet.UsedRange; //엑셀 시트범위 설정 data = range.Value; // 지정된 시트 2차원 배열에 담기 rowCounts = range.Rows.Count; // 행 개수 colCounts = range.Columns.Count; //열 개수 //Debug.WriteLine("col counts: " + colCounts); int dataStartRow = 1; int dataStartCol = 1; int dataEndRow = 0; int dataEndCol = 0; for (int r = 1; r < rowCounts; r++) { for (int c = 1; c < colCounts; c++) { Debug.WriteLine("row, col: " + r + ", " + c); if (data[r, c] != null) { Debug.WriteLine("data[r, c]: " + data[r, c]); if (data[r, c].ToString().Equals("P&ID NO.")) { dataEndRow = r; dataEndCol = c; break; } else if (data[r, c].ToString().Equals("LINE INFORMATION")) { dataStartRow = r + 1; dataStartCol = c; break; } } } if (dataEndRow != 0) { break; } } Debug.WriteLine("data start row: " + dataStartRow); Debug.WriteLine("data start col: " + dataStartCol); Debug.WriteLine("data end row: " + dataEndRow); if ((dataEndCol - dataStartCol + 1) != 19) { // 콜롬 개수가 지정된 19개가 아니라면 경고 창 띄움 MessageBox.Show("정의된 열 개수를 벗어났습니다.\n 데이터를 저장하지 않았습니다."); } else { newRow = rowCounts - dataStartRow; newCol = colCounts - dataStartCol; //19 int newArrayCounts = newRow * newCol; arr = new object[newArrayCounts]; int index = 0; for (int r = dataStartRow + 1; r <= rowCounts; r++) { if (index > newArrayCounts) { break; } for (int c = dataStartCol; c < colCounts; c++) { arr[index] = data[r, c]; index++; //Debug.WriteLine("data[" + r + ", " + c + "] = " + data[r, c]); } } bool success = false; Linelist_WCF.Service1Client client = new Linelist_WCF.Service1Client(); success = client.Put_data_into_DB(arr, newRow, newCol, "", "", ""); if (success) { MessageBox.Show($"데이터를 성공적으로 저장했습니다."); } else { MessageBox.Show($"DB 연결 실패"); } } xlWorkbook.Close(true); xlApp.Quit(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { ReleaseExcelObject(xlWorksheet); ReleaseExcelObject(xlWorkbook); ReleaseExcelObject(xlApp); } } else { MessageBox.Show($"저장 할 파일이 선택 되지 않았습니다."); } }