반응형
Interop을 사용하여 Excel 인쇄
C#과 Excel Interop을 사용하여 Excel 파일을 프로그래밍 방식으로 인쇄하는 방법을 아는 사람이 있습니까?그렇다면 코드를 제공해 주시겠습니까?
인쇄하려면 워크시트를 사용할 수 있습니다.PrintOut() 메서드입니다.유형을 전달하여 선택적 인수의 일부 또는 전부를 생략할 수 있습니다.행방불명.이 모든 항목을 생략하면 활성 프린터에서 기본적으로 하나의 복사본이 인쇄됩니다.그러나 인수를 사용하여 인쇄할 복사본 수, 조합 등을 설정할 수 있습니다.워크시트의 도움말을 참조하십시오.자세한 내용은 PrintOut() 메서드를 참조하십시오.
도움말 파일에 표시되는 예는 다음과 같습니다.
private void PrintToFile()
{
// Make sure the worksheet has some data before printing.
this.Range["A1", missing].Value2 = "123";
this.PrintOut(1, 2, 1, false, missing, true, false, missing);
}
그러나 기본 설정을 변경할 필요가 없는 한 유형을 전달하면 됩니다.모든 인수가 누락되었습니다.다음은 자동화를 사용하여 Excel 워크북을 열고 첫 페이지를 인쇄한 다음 종료하는 예입니다.
void PrintMyExcelFile()
{
Excel.Application excelApp = new Excel.Application();
// Open the Workbook:
Excel.Workbook wb = excelApp.Workbooks.Open(
@"C:\My Documents\Book1.xls",
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing,Type.Missing,Type.Missing);
// Get the first worksheet.
// (Excel uses base 1 indexing, not base 0.)
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
// Print out 1 copy to the default printer:
ws.PrintOut(
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// Cleanup:
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(ws);
wb.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(wb);
excelApp.Quit();
Marshal.FinalReleaseComObject(excelApp);
}
이것이 도움이 되길 바랍니다!
마이크
중요한 개선 사항은 다음과 같은 프린터 선택 코드입니다.
var printers = System.Drawing.Printing.PrinterSettings.InstalledPrinters;
int printerIndex = 0;
foreach(String s in printers)
{
if (s.Equals("Name of Printer"))
{
break;
}
printerIndex++;
}
xlWorkBook.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing,printers[printerIndex], Type.Missing, Type.Missing, Type.Missing);
이미 제공된 모든 답변은 좋지만 대화 상자를 표시하고 인쇄할 페이지의 방향을 정의하는 옵션이 더 많아 훨씬 단순하게 유지할 수 있다고 생각했습니다.
private void PrintExcel()
{
string filePath = "C:\file\location\here\";
Excel.Application excelApp = new Excel.Application();
// Open Workbook:
Excel.Workbook wb = excelApp.Workbooks.Open(filePath);
// Define the orientation for the page
((Excel._Worksheet)wb.ActiveSheet).PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;
//Decide which worksheet to print
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
// Option to print with or to show dialogue box
bool userDidntCancel = excelApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show();
// Option to print out wihtout the dialogue box.
// WARNING: Do not use Dialogue option and this at the same time.
// It will print the page even if you cancel the dialogue print option.
ws.PrintOut();
// Cleanup your code
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(ws);
wb.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(wb);
// Close/Exit File
excelApp.Quit();
Marshal.FinalReleaseComObject(excelApp);
}
이 부분이 누군가에게 도움이 되길 바랍니다. :D
언급URL : https://stackoverflow.com/questions/854693/printing-excel-using-interop
반응형
'programing' 카테고리의 다른 글
Application_Start와 Application_OnStart의 차이 (0) | 2023.08.24 |
---|---|
regex_substr 첫 번째 항목만 반환 MariaDB(Wordpress) (0) | 2023.08.24 |
Ajax를 사용하여 로드된 양식에 대해 MVC 4 클라이언트 측 유효성 검사가 작동하지 않습니다. (0) | 2023.08.24 |
Excel 셀 값이 OLEDB 공급자에 의해 잘립니다. (0) | 2023.08.19 |
SQL(MariaDB)에서 문자열의 모든 하위 문자열에 대한 작업 수행 (0) | 2023.08.19 |