chen0516 님, 안녕하세요.
메시어스입니다.
문의하신 기능은 아쉽게도 Spread.NET에서 직접적으로/공식적으로 지원하지 않는 기능입니다.
하나의 페이지에는 하나의 시트만 인쇄가 됩니다. 말씀하신 시나리오처럼 여러 시트를 하나의 페이지로 인쇄하기 위해서는,
- 임의의 시트를 생성하고
- 인쇄할 내용을 하나의 시트에 복사한 후
- 임의의 시트를 인쇄하고,
- 임의의 시트를 제거
하는 방법을 적용해보실 수 있습니다.
아래 샘플 코드는 상기 내용에 따라 작성된 코드입니다. 샘플 코드를 참고 및 수정하여 사용해주시기 바라며, PDF 파일로 저장한 결과물은 첨부된 OnePage.pdf 파일을 참고해주시기 바랍니다.
// 1. 새로운 시트를 생성합니다.
fpSpread1.Sheets.Count++;
FarPoint.Win.Spread.SheetView sv = fpSpread1.Sheets[3];
// 2. sheet1,2,3을 복사하여 새로운 시트에 붙여 넣습니다.
for(int i=0; i<fpSpread1.Sheets.Count - 1; i++)
{
// 원본 시트를 복사합니다.
fpSpread1.Sheets[i].ClearSelection();
fpSpread1.Sheets[i].AddSelection(
0,
0,
fpSpread1.Sheets[i].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data) + 1,
fpSpread1.Sheets[i].GetLastNonEmptyColumn(FarPoint.Win.Spread.NonEmptyItemFlag.Data) + 1
);
fpSpread1.Sheets[i].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.All);
fpSpread1.Sheets[i].ClearSelection();
// 임시 시트에 붙여 넣기 합니다.
sv.ClearSelection();
sv.SetActiveCell(
sv.GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data) + 1,
0
);
sv.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All);
}
sv.PrintInfo.ShowColor = true;
sv.PrintInfo.PrintToPdf = true;
sv.PrintInfo.PdfFileName = "OnePage.pdf";
// 3. 임시 시트를 인쇄합니다.
fpSpread1.PrintSheet(fpSpread1.Sheets.Count - 1, false);
// 4. 임시 시트를 삭제합니다.
fpSpread1.Sheets.Remove(sv);
단, 각 시트 별 열 너비가 다른 경우에는 예측하신 디자인과 인쇄 결과에 다소 차이가 있을 수 있습니다. 이 점 유의하여 주시기 바랍니다.
아울러, 시트를 이미지 파일로 저장하는 기능은 Spread.NET WinForms V15 이상에서 지원되는 기능으로, SaveImage 메서드를 사용하여 시트에서 원하는 영역을 이미지로 생성할 수 있습니다.
아래 링크된 도움말 문서에서 SaveImage 메서드 사용 방법을 확인하실 수 있습니다.
- 이미지 파일로 저장
감사합니다.
메시어스 드림