! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

시트 변경시키며 순차 인쇄 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 시트 변경시키며 순차 인쇄

페이지 정보

작성자 치약먹엇쩡 작성일 2023-03-10 14:21 조회 580회 댓글 1건
제품 버전 : Spread.NET11
컨트롤 이름 : FpSpread

본문

첨부파일

문의드립니다.

하기 첨부 파일 : 캡처1


설명 : 인쇄를 눌렀을때 선택 옵션 체크 항목만큼 페이징 처리된 현재 기준 4개의 시트 페이지가 순차적으로 인쇄가 

가능한 방법을 예제 코드나 답변으로 도움 받았으면 합니다.


구현하고자 하는 기능은 : 

원장 , 송장 항목 체크  현재 페이지 Display 된 데이터 총 4개의 페이지가 있습니다.

위 체크된 도구 항목 만큼 -> 원장 Sheet1 ~ 4 순서로 시트 해더 명칭 거래명세서(원장)으로 4개 인쇄 후 

                                송장 Sheet1 ~ 4 순서로 거래명세서(송장) 인쇄

총 8장이 순차적으로!! 출력이 되었으면 합니다.


소스 일부 첨부 드립니다.

하기 첨부 파일 : 캡처2


해당 방법으로 처리 하였으나 

실제 인쇄되는 순서도 인쇄 전달받은 시간의 관련없이 출력이 이루어 집니다. 

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

GCK써니님의 댓글

GCK써니 작성일

치약먹엇쪙 님, 안녕하세요.
그레이프시티입니다.

문의하신 내용에 대하여 확인 중에 있으며, 관련 내용이 업데이트 되는 대로 안내드리도록 하겠습니다.
답변이 지연되는 점, 죄송합니다.

감사합니다.
그레이프시티 드림

4 답변

WinForms윈폼 Re: 시트 변경시키며 순차 인쇄

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-03-15 12:49 댓글 0건

본문

치약먹엇쪙 님, 안녕하세요.

그레이프시티입니다.


문의하신 "Spread를 순차적으로 출력하는 방법"에 대하여 안내드립니다.


기본적으로 PrintSheet는 별도의 스레드를 생성하여 시트를 출력하는데, 이때 실행 스레드는 Spread가 제어할 수 없는 .NET의 기본 스레드 풀에서 수행됩니다. 이로 인해 아래와 같은 코드를 수행하였을 때, 인쇄 대기열에 원치않은 순서로 보여지게 됩니다.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If CheckBox1.Checked Then print1()
    If CheckBox2.Checked Then print2()
End Sub

Private Sub print2()
    For i = 0 To count - 1
        FpSpread2.Sheets(i).PrintInfo.JobName = String.Format("B - {0}", i)
        FpSpread2.Sheets(i).PrintInfo.Preview = False
        FpSpread2.Sheets(i).PrintInfo.ShowPrintDialog = False
        FpSpread2.Sheets(i).SetText(1, 1, "Doc type B")
        FpSpread2.PrintSheet(i, True)
    Next
End Sub

Private Sub print1()
    For i = 0 To count - 1
        FpSpread1.Sheets(i).PrintInfo.JobName = String.Format("A - {0}", i)
        FpSpread1.Sheets(i).PrintInfo.Preview = False
        FpSpread1.Sheets(i).PrintInfo.ShowPrintDialog = False
        FpSpread1.Sheets(i).SetText(1, 1, "Doc type A")
        FpSpread1.PrintSheet(i, True)
    Next
End Sub


따라서, Spread를 순서대로 인쇄하고자 하는 경우 별도의 스레드를 사용하는 대신, 현재 UI 스레드(print1 및 print2를 호출하는 스레드)를 사용해야 합니다.

코드를 아래와 같이 변경하여 사용해보시기 바랍니다.

FpSpread1.PrintSheet(i, False) 
'use newThread as False not to print in separated thread


감사합니다.

그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

WinForms윈폼 Re: 시트 변경시키며 순차 인쇄

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-03-15 18:39 댓글 1건

본문

첨부파일

치약먹엇쪙 님, 안녕하세요.

그레이프시티입니다.


문의하신 "순차적으로 인쇄 완료 후, 폼을 닫는 방법"에 대하여 회신드립니다.

첨부된 샘플 프로젝트를 실행하시면, 아래 영상과 같이 동작하는 것을 확인하실 수 있습니다.

517d9ceba85e5b1863a05ea431595118_1678873059_8844.gif
샘플 프로젝트에서는 FpSpread 객체를 하나만 생성하여 사용하였습니다.

또한 인쇄 시 별도의 스레드를 생성하지 않고 현재의 UI스레드(PrintSheet 메소드를 호출하는 스레드)를 사용하도록 하기 코드를 사용하셨습니다.

FpSpread1.PrintSheet(SheetIndex, False)

이외의 상세한 내용은 샘플 프로젝트의 내용을 참고하여주시기 바라며. 해당 샘플은 기능 구현을 위해 간단하게 작성된 코드로, 사용하실 경우의 수에 따라 수정하여 사용해주시기 바랍니다.


추가로 궁금하신 사항이 있을 경우, 문의주시기 바랍니다.

감사합니다.

그레이프시티 드림

댓글목록

삭제된 댓글

치약먹엇쩡 작성일

삭제된 댓글 입니다.

WinForms윈폼 Re: 시트 변경시키며 순차 인쇄

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 치약먹엇쩡 작성일 2023-03-17 08:52 댓글 1건

본문

위 답변 감사드리며 너무 잘 사용 하고 있습니다.

신경 써 주셔 감사합니다.


추가 문의가 하나 있습니다.


첫 문의 첨부 사진 2 번에 보면 인쇄 대기열 목록들이 건 별 인쇄 전송을 받아 출력되는게 확인됩니다.


시트 페이지가 1장 초과일 경우 한번에 인쇄 대기열에 묶음 전송 하는 기능은 없는지요?


출력물 페이지가 20장도 넘는 경우가 다수 발생하는데 PrintSheet(-1)  함수 자체가 건 별 전송인거 같습니다.

때문에 다수 페이지 인쇄시 출력물 모두가 대기열에 들어가야지만 현재 개발 중인 응용 프로그램에서 이 후 작업이 가능하게 됩니다....


사용자가 멍하니 컴퓨터만 바라봐야 하는 상황이 자주 발생하는 것이죠


댓글목록

치약먹엇쩡님의 댓글

치약먹엇쩡 작성일

이전에 보내주신 답변의 영상 참고 자료에서도 인쇄가 하나하나 올라가는데 
인쇄가 다 완료되기 전까지는 예제 프로그램이 멈추는 것 같은 기분을 받으실 수 있습니다.

WinForms윈폼 Re: 시트 변경시키며 순차 인쇄

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-03-17 16:29 댓글 0건

본문

치약먹엇쪙 님, 안녕하세요.

그레이프시티입니다.


Q) 

시트 페이지가 1장 초과일 경우 한번에 인쇄 대기열에 묶음 전송 하는 기능은 없는지요?


A)

하기 코드로 원하시는 기능을 사용하실 수 있습니다.

FpSpread1.PrintSheet(0, False, FarPoint.Win.Spread.PrintArea.EntireWorkbook)

다만, 해당 기능은 Spread.NET V15 SP3부터 지원되는 기능으로 현재 사용하시는 버전에서는 지원되지 않는 기능입니다.

해당 기능을 사용하기 위해서는 제품 업데이트를 고려해주시기 바랍니다.


감사합니다.

그레이프시티 드림.

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.