2015년 4월 1일 수요일

스프레드 닷넷 관련 삽질 C#

스프레드로 바코드 프린트 하면서 알게 된 삽질

// 모든 삽질이 들어있는 코드
FarPoint.Win.Spread.CellType.NumberCellType numberCellType =
                                    new FarPoint.Win.Spread.CellType.NumberCellType();
            numberCellType.DecimalPlaces = 0;
            numberCellType.Separator = ",";
            numberCellType.ShowSeparator = true;
 
            FarPoint.Win.Spread.FpSpread spp = new FpSpread();
            FarPoint.Win.Spread.SheetView spp_Sheet1 = new SheetView();
 
            spp_Sheet1 = sp_Emp_Print_Sheet1.Clone();
            spp.Sheets.Add(spp_Sheet1);
 
            
            PrintPreviewDialog ppd = new PrintPreviewDialog();
            
            ppd.ShowIcon = false;
 
            ppd.Width = 800;
            ppd.Height = 600;
 
            spp.SetPrintPreview(ppd);
            
            FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();
 
            pi.Preview = true;
            pi.ShowGrid = false; //그리드 여부
            pi.ShowBorder = false; //보더 여부
            pi.ShowColumnHeader = FarPoint.Win.Spread.PrintHeader.Hide;
            pi.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;
            pi.UseSmartPrint = true;
            pi.Margin.Top = 60;
            pi.Margin.Bottom = 30;
            pi.Margin.Left = 0;
            pi.Margin.Right = 0;
 
            pi.Centering = Centering.Horizontal;
 
            pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Portrait; //가로 세로
            pi.ShowPrintDialog = true;
 
           spp_Sheet1.PrintInfo = pi;
           spp.PrintSheet(0);

//시트 여러개 일때 한번에 프린트하기

for(int a=0; a<spread.Sheet.Count; aa++)
{
    spread.SetPrintInfo(pi,a);
    spread.PrintSheet(a);
}

// 두개의 시트를 프리뷰하고 싶다는 게시물 , 그러나 실현불가

// 프린트 세부 설명
  private void btnPrt_Click(object sender, System.EventArgs e)  {   string strYmd = dtpStrYmd.Value.ToString("yyyy-MM-dd");   string endYmd = dtpEndYmd.Value.ToString("yyyy-MM-dd");
    //가로세로
   spd.Sheets[0].PrintInfo.Orientation = FarPoint.Win.Spread.PrintOrientation.Portrait;
    //여백설정
   spd.Sheets[0].PrintInfo.Margin.Top = 100;   spd.Sheets[0].PrintInfo.Margin.Left = 40;   spd.Sheets[0].PrintInfo.Margin.Right = 10;   spd.Sheets[0].PrintInfo.Margin.Bottom = 30;
    //페이지 헤더설정
   spdMedRec.Sheets[0].PrintInfo.Header = "/c/fz\"14\"/fb1[[ 페이지 제목 ]]/fb0/fz\"10\"/n/l/n ";
    //페이지 아랫쪽 Footer(페이지 정보 출력)
   spdMedRec.Sheets[0].PrintInfo.Footer = "/c/fz\"12\"스프레드 출력테스트/fz\"10\"/rPage : /p / /pc";      
    //미리보기여부 설정
   spdMedRec.Sheets[0].PrintInfo.Preview = true;    
    //스프레드의 줄번호까지 출력할지 여부
   spdMedRec.Sheets[0].PrintInfo.ShowRowHeaders = false;  
    //확대 비율
   //spdMedRec.Sheets[0].PrintInfo.ZoomFactor = 0.7F;   
   
    //0번째 Sheet 출력
   spdMedRec.PrintSheet(0); 
  }

// 원본 시트가 있고 이걸 활용하고 싶을때 복사시트
private void button1_Click(object sender, EventArgs e)
        {
            FarPoint.Win.Spread.SheetView sv = new FarPoint.Win.Spread.SheetView();
            sv = CopySheet(fpSpread1.Sheets[0]);
            sv.SheetName = "Sheet2";
            fpSpread1.Sheets.Add(sv);
        }
        public FarPoint.Win.Spread.SheetView CopySheet(FarPoint.Win.Spread.SheetView sheet)
        {
            FarPoint.Win.Spread.SheetView newSheet = null;
            if (sheet != null)
            {
                newSheet = (FarPoint.Win.Spread.SheetView)FarPoint.Win.Serializer.LoadObjectXml(sheet.GetType(), FarPoint.Win.Serializer.GetObjectXml(sheet, "CopySheet"), "CopySheet");
            }
            return newSheet;
        } 

// 체크박스 사용시엔 스프레드 OperationMode = nomal

셀 속성으로 CheckBox를 지정하였음에도 실행시 체크박스를 클릭했을때
체크표시가 되지 않는 경우가 있다.
이때 Operation 모드를 변경하여 준다.

Dim CheckBox As New FarPoint.Win.Spread.CellType.CheckBoxCellType
ColumnHeader.Cells(0, col).CellType = CheckBox

.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect   -> SingleSelect 설정 시 SPREAD의 특정 행을 클릭하면 해당행 전체가 박스형태로 표시된다

 .OperationMode = FarPoint.Win.Spread.OperationMode.Normal   -> 특정 행을 클릭하면 행뿐만아니라 해당 열까지 고려하여, 마우스포인터가 속하는 셀이 선택된다
        이 설정을 해주어야 체크박스 클릭시 체크표시가 된다
       또한 이 설정을 해주면
       체크박스를 클릭했을 때 Farpoint - ButtonClicked Event  가 발생한다.

 fps_material_ip.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.None
-> Column Header나 Row Header를 클릭했을때 해당 행 또는 열이 블럭화 되는 설정을 해제한다
     이부분은 체크박스 헤더 클릭시 전체 선택 효과를 위해 필요한 부분이다.




댓글 없음 :

댓글 쓰기