Excel のワークシートを印刷すると、書式やレイアウトが完璧に整っているワークシートが、印刷後に非常に乱雑な状態になることがあります。これは、エクセルのワークシートはパソコンで内容を見たり編集したりしやすいように設計されており、直接印刷すると画面上の表示と大きく異なることがあるためです。したがって、ワークシートをそのままの書式とレイアウトで印刷するためには、印刷時に印刷オプションを設定する必要があります。この記事では、Spire.XLS for Java を使って Excel ファイルを印刷する方法と、印刷の設定について説明します。
Spire.XLS for Java をインストールします
まず、Spire. XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>12.8.4</version>
</dependency>
</dependencies>
ページ設定によるExcel印刷オプションを設定する
Excel のページ設定には、コメントを印刷するかどうか、グリッドラインを印刷するかどうか、1つのページにワークシートをレイアウトするかどうかなど、ワークシートの印刷方法を制御するオプションが用意されています。
XLS for Java では、これらの印刷オプションを設定するための PageSetup クラスが用意されています。 以下は、PageSetup クラスのメソッドを使って、Spire.XLS for Java で Excel の印刷オプションを設定する方法の説明です。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドで、Excel ファイルを読み込みます。
- Workbook.getWorksheets().get() メソッドで、指定したワークシートを取得します。
- Worksheet.getPageSetup() メソッドを使用して、PageSetup クラスのオブジェクトを取得します。
- PageSetup クラスのメソッドを使用して、ページの余白、印刷領域、ヘッダーを印刷するかどうか、印刷品質などのオプションを設定します。
- PrinterJob.print() メソッドを使用して、ワークブックを印刷します。
- Java
import com.spire.xls.*;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class setPrintOptions {
public static void main(String[] args) {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("貸借対照表.xlsx");
//1つ目のワークシートを取得する
Worksheet worksheet = workbook.getWorksheets().get(0);
//PageSetupクラスのオブジェクトを作成し、1つ目のワークシートからページ設定を取得する
PageSetup pageSetup = worksheet.getPageSetup();
//余白を設定する
pageSetup.setTopMargin(0.3);
pageSetup.setBottomMargin(0.3);
pageSetup.setLeftMargin(0.3);
pageSetup.setRightMargin(0.3);
//印刷する領域を指定する
pageSetup.setPrintArea("A1:C18");
//ヘッダー列を指定する
pageSetup.setPrintTitleRows("$1:$1");
//ヘッダー列の印刷を許可する
pageSetup.isPrintHeadings(true);
//グリッド線の印刷を許可する
pageSetup.isPrintGridlines(true);
//コメントの印刷と表示を許可する
pageSetup.setPrintComments(PrintCommentType.InPlace);
//印刷品質(dpi)を設定する
pageSetup.setPrintQuality(300);
//白黒モードでの印刷を許可する
pageSetup.setBlackAndWhite(true);
//印刷順序を設定する
pageSetup.setOrder(OrderType.OverThenDown);
//ワークシートを1ページにレイアウトする
pageSetup.isFitToPage(true);
//Paperクラスのオブジェクトを作成する
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = printerJob.defaultPage();
Paper paper = pageFormat.getPaper();
//用紙の描画可能領域を設定する
paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
//印刷部数を設定する
printerJob.setCopies(1);
pageFormat.setPaper(paper);
//設定された書式でワークブックをレイアウトする
printerJob.setPrintable(workbook, pageFormat);
//印刷を実行する
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
Excel ファイルを印刷する際のプリンターを設定する
印刷オプションの設定だけでなく、印刷時にネットワーク上のプリンターを指定する方法や、プリンターの設定方法についても知っておくことが重要です。 次のステップは、Spire.XLS for Java の PrinterJob クラスのメソッドを使用して、プリンタを設定し、Excel ファイルを印刷する方法を示しています。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
- PrinterJob クラスのオブジェクトを作成します。
- PrinterJob.setPrintService() メソッドでプリンター名を指定します。
- PrinterJob.setCopies() メソッドを使用して、印刷する部数を設定します。
- PrinterJob.setPrintable() メソッドでペインターを呼び出して、ワークブックをレンダリングします。
- PrinterJob.print() メソッドを使用して、ワークブックを印刷します。
- Java
import com.spire.xls.Workbook;
import javax.print.PrintService;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class specifyPrinterSettings {
public static void main(String[] args) throws PrinterException {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("貸借対照表.xlsx");
//PrinterJobクラスのオブジェクトを作成する
PrinterJob printerJob = PrinterJob.getPrinterJob();
//プリンター名を指定する
PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
printerJob.setPrintService(myPrintService);
//PageFormatクラスのオブジェクトを作成し、ページのサイズと向きをデフォルトに設定する
PageFormat pageFormat = printerJob.defaultPage();
//このページ設定を持つPaperクラスのオブジェクトを返す
Paper paper = pageFormat .getPaper();
//用紙の描画可能領域を設定する
paper.setImageableArea(0,0,pageFormat .getWidth(),pageFormat .getHeight());
//このPaperクラスのオブジェクトでページを設定する
pageFormat.setPaper(paper);
//印刷部数を設定する
printerJob .setCopies(1);
//ペインターを呼び出して、指定された書式でワークブックを描画する
printerJob .setPrintable(workbook,pageFormat);
//印刷を実行する
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
//プリンター名から印刷サービスを取得する
private static PrintService findPrintService(String printerName) {
PrintService[] printServices = PrinterJob.lookupPrintServices();
for (PrintService printService : printServices) {
if (printService.getName().equals(printerName)) {
return printService;
}
}
return null;
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30