/// <summary> /// 범위에 검색하는 문자가 있으면 범위에 row단위로 글자색/배경색을 변경 하여준다.. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="strInStr"></param> /// <param name="intChkCol"></param> /// <param name="intStCol"></param> /// <param name="intEdCol"></param> /// <param name="colFore">null 이면 변경 않함</param> /// <param name="colBack">null 이면 변경 않함</param> public static void Invoke_CellRange_InStr_SetRowColor(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, string strInStr, int intChkCol, int intStCol, int intEdCol, object colFore, object colBack) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_CellRange_InStr_SetRowColor(Invoke_CellRange_InStr_SetRowColor), new object[] { fp, sv, strInStr, intChkCol, intStCol, intEdCol, colFore, colBack }); return; } for (int y = 0; y < sv.Rows.Count; y++) { if (sv.Cells[y, intChkCol].Text.IndexOf(strInStr) >= 0) { if (colFore != null) { sv.Cells[y, intStCol, y, intEdCol].ForeColor = (Color)colFore; } if (colBack != null) { sv.Cells[y, intStCol, y, intEdCol].BackColor = (Color)colBack; } } } fp.Refresh(); }
/// <summary> /// 해당 컬럼에 값이 일치 하면 글자색을 바꿔준다.. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intCols"></param> /// <param name="str"></param> /// <param name="colBackColor"></param> public static void Invoke_SearchThenChForecolor(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int[] intCols, string str, Color colForecolor) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_SearchThenChForecolor(Invoke_SearchThenChForecolor), new object[] { fp, sv, intCols, str, colForecolor }); return; } int intColCnt = sv.ColumnCount - 1; for (int y = 0; y < sv.Rows.Count; y++) { foreach (int intCol in intCols) { int rst = sv.Cells[y, intCol].Text.IndexOf(str); if (rst >= 0) { sv.Cells[y, 0, y, intColCnt].ForeColor = colForecolor; break; } } } }
/// <summary> /// row count를 변경한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intRowCount"></param> public static void Invoke_RowCount(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intRowCount) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_RowCount(Invoke_RowCount), new object[] { fp, sv, intRowCount }); return; } sv.RowCount = intRowCount; }
/// <summary> /// 셀을 스팬(머지) 한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intRow"></param> /// <param name="intCol"></param> /// <param name="intRowSpanCnt"></param> /// <param name="intColSpanCnt"></param> public static void Invoke_CellSpan(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intRow, int intCol, int intRowSpanCnt, int intColSpanCnt) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_CellSpan(Invoke_CellSpan), new object[] { fp, sv, intRow, intCol, intRowSpanCnt, intColSpanCnt }); return; } sv.Cells[intRow, intCol].ColumnSpan = intColSpanCnt; sv.Cells[intRow, intCol].RowSpan = intRowSpanCnt; }
/// <summary> /// 셀 범위에 값을 변경한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="Y"></param> /// <param name="X"></param> /// <param name="Y2"></param> /// <param name="X2"></param> /// <param name="objValue"></param> public static void Invoke_CellRange_Value(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int Y, int X, int Y2, int X2, object objValue) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_CellRange_Value(Invoke_CellRange_Value), new object[] { fp, sv, Y, X, Y2, X2, objValue }); return; } sv.Cells[Y, X, Y2, X2].Value = objValue; }
/// <summary> /// fpSheet에 Row를 추가 하여준다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intAddIndex">들어갈 위치 : '-1'이면 마지막에 위치 시킨다.</param> /// <param name="intMaxRowCount">최대 행 유지 갯수 : 0이면 무제한 증가..</param> public static void Invoke_AddRowData(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intAddIndex, int intMaxRowCount, object [] objData) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_AddRowData(Invoke_AddRowData), new object[] { fp, sv, intAddIndex, intMaxRowCount, objData }); return; } try { if (intAddIndex < 0) { intAddIndex = sv.Rows.Count; } sv.Rows.Add(intAddIndex, 1); int intCol = 0; foreach (object obj in objData) { //if (sv.ColumnCount <= intCol) break; sv.Cells[intAddIndex, intCol].Value = obj; intCol++; } //최대행 유지를 위해 Row를 삭제 한다. if (intMaxRowCount > 0 && sv.Rows.Count >= intMaxRowCount) { int intDelIndex = 0; int intDelCount = 1 + intMaxRowCount - sv.Rows.Count; //아래 추가 시만 위에 삭제, 그외 경우는 아래 부분 삭제.. if (intAddIndex < 0) { intDelIndex = 0; } else { intDelIndex = sv.Rows.Count - intDelCount; } sv.Rows.Remove(intDelIndex, 1); } } catch (Exception ex) { log.WLog_Exception(string.Format("Invoke_AddRowData[fp]{0}[AddIdx]{1}[MaxRow]{2}", fp.Name, intAddIndex, intMaxRowCount), ex); } }
/// <summary> /// row를 삭제 한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intDelIndex">삭제 위치 : '-1'이면 마지막부터 위로 삭제 시킨다.</param> /// <param name="intDelRowCount"></param> public static void Invoke_DeleteRow(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intDelIndex, int intDelRowCount) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_AddRow(Invoke_DeleteRow), new object[] { fp, sv, intDelIndex, intDelRowCount }); return; } if (intDelIndex < 0) { intDelIndex = sv.Rows.Count - intDelRowCount; } sv.Rows.Remove(intDelIndex, intDelRowCount); }
/// <summary> /// 셀에 값을 변경한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="Y"></param> /// <param name="X"></param> /// <param name="objValue"></param> public static void Invoke_Cell_Value(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int Y, int X, object objValue) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_Cell_Value(Invoke_Cell_Value), new object[] { fp, sv, Y, X, objValue }); return; } try { sv.Cells[Y, X].Value = objValue; } catch (Exception ex) { log.WLog_Exception(string.Format("{0}[sv]{1}[y}{2}[x]{3][obj]{4}", "Invoke_Cell_Value", fp.Name, Y, X, objValue), ex); } }
/// <summary> /// 범위에 ForeColor와 BackColor를 변경하여 준다.. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intStRow">시작 row</param> /// <param name="intEdRow">종료 row</param> /// <param name="intStCol">시작 col</param> /// <param name="intEdCol">종료 col</param> /// <param name="colFore">object color - 변경 안할시에는 null</param> /// <param name="colBack">object color - 변경 안할시에는 null</param> public static void Invoke_CellRange_SetRowColor(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intStRow, int intEdRow, int intStCol, int intEdCol, object colFore, object colBack) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_CellRange_SetRowColor(Invoke_CellRange_SetRowColor), new object[] { fp, sv, intStRow, intEdRow, intStCol, intEdCol, colFore, colBack }); return; } if (colFore != null) { sv.Cells[intStRow, intStCol, intEdRow, intEdCol].ForeColor = (Color)colFore; } if (colBack != null) { sv.Cells[intStRow, intStCol, intEdRow, intEdCol].BackColor = (Color)colBack; } fp.Refresh(); }
/// <summary> /// databinding with field /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="dt"></param> /// <param name="strField"></param> public static void Invoke_DataSource(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, DataView dt, string[] strField, StBindingOption bindingOption) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_DataSource2(Invoke_DataSource), new object[] { fp, sv, dt, strField, bindingOption }); return; } try { sv.AutoGenerateColumns = bindingOption.AutoGenerateColumns; sv.DataAutoHeadings = bindingOption.DataAutoHeadings; sv.DataAutoCellTypes = bindingOption.DataAutoCellTypes; sv.DataAutoSizeColumns = bindingOption.DataAutoSizeColumns; sv.Rows.Count = 0; if (dt != null) { sv.DataSource = dt; } if (strField == null) { return; } for (int x = 0; x < strField.Length; x++) { sv.Columns[x].DataField = strField[x]; } } catch (Exception ex) { log.WLog_Exception(string.Format("{0}[fp]{1}", "Invoke_DataSource", fp.Name), ex); } }
/// <summary> /// 해당 Row의 forecolor과 backcolor을 변경한다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="intRow"></param> /// <param name="colFore">null 이면 변경 않</param> /// <param name="colBack">null 이면 변경 않</param> public static void Invoke_Row_SetColor(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, int intRow, object colFore, object colBack) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_Row_SetColor(Invoke_Row_SetColor), new object[] { fp, sv, intRow, colFore, colBack }); return; } if (intRow >= sv.RowCount) { return; } if (colBack != null) { sv.Rows[intRow].BackColor = (Color)colBack; } if (colFore != null) { sv.Rows[intRow].ForeColor = (Color)colFore; } fp.Refresh(); }
/// <summary> /// 시트에 datatable에 있는 데이터를 컬럼을 이용하여 넣어 준다. /// </summary> /// <param name="fp"></param> /// <param name="sv"></param> /// <param name="dt"></param> /// <param name="strColumn"></param> /// <param name="intAddIndex">들어갈 위치 : '-1'이면 마지막에 위치 시킨다</param> /// <param name="intMaxRowCount">최대 행 유지 갯수 : 0이면 무제한 증가..</param> /// <param name="isClear"></param> public static void Invoke_AddData(FarPoint.Win.Spread.FpSpread fp, FarPoint.Win.Spread.SheetView sv, DataTable dt, string[] strColumn, int intAddIndex, int intMaxRowCount, bool isClear) { if (fp.InvokeRequired) { fp.Invoke(new delInvoke_AddData(Invoke_AddData), new object[] { fp, sv, dt, strColumn, intAddIndex, intMaxRowCount, isClear }); return; } if (isClear) { sv.RowCount = 0; } int intRow; //sv.RowCount = sv.RowCount + dt.Rows.Count; //string strValue; foreach (DataRow dr in dt.Rows) { if (intAddIndex < 0) { intRow = sv.RowCount; sv.RowCount++; } else { intRow = 0; sv.Rows.Add(0, 1); } int intCol = 0; foreach (string strCol in strColumn) { if (strCol == string.Empty) { sv.Cells[intRow, intCol].Value = string.Empty; } else { if (sv.Columns.Get(intCol).CellType != null && sv.Columns.Get(intCol).CellType.GetType() == typeof(FarPoint.Win.Spread.CellType.CheckBoxCellType)) { if (dr[strCol].ToString().ToUpper() == "TRUE" || dr[strCol].ToString().ToUpper() == "1") { sv.Cells[intRow, intCol].Value = true; } else { sv.Cells[intRow, intCol].Value = false; } } else { sv.Cells[intRow, intCol].Value = dr[strCol]; } } intCol++; } intRow++; } //최대행 유지를 위해 Row를 삭제 한다. if (intMaxRowCount > 0 && sv.Rows.Count >= intMaxRowCount) { int intDelIndex = 0; int intDelCount = sv.Rows.Count - intMaxRowCount; //아래 추가 시만 위에 삭제, 그외 경우는 아래 부분 삭제.. if (intAddIndex < 0) { intDelIndex = 0; } else { intDelIndex = intMaxRowCount; } sv.Rows.Remove(intDelIndex, intDelCount); } }