Sometimes, you may find that a well-formatted and organized sheet looks messy on a printed page. This is because Excel worksheets are designed for comfortable viewing and editing on screen, not to fit on a sheet of paper. To get perfect hard copies of your Excel documents, you'll need to configure the print settings. In this article, you will learn how to set Excel print options and how to send Excel documents to a specified printer in Java using Spire.XLS for Java.
- Set Excel Print Options via Page Setup in Java
- Specify Printer Settings when Printing Excel Documents in Java
Install Spire.XLS for Java
First of all, you're required to add the Spire.Xls.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<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>15.4.0</version> </dependency> </dependencies>
Set Excel Print Options via Page Setup in Java
Excel Page Setup provides options to control how a worksheet will be printed, such as whether to print comments, whether to print gridlines and whether to fit worksheet on one page.
Spire.XLS offers the PageSetup object to deal with all these things. The following are the steps to set Excel print options through PageSetup using Spire.XLS for Java.
- Create a Workbook object.
- Load an Excel file using Workbook.loadFromFile() method.
- Get a specific worksheet using Workbook.getWorksheets().get() method.
- Get PageSetup object using Worksheet.getPageSetup() method.
- Set page margins, print area, pint title row, print quality, etc. using the methods under PageSetup object.
- Print the workbook by using PrinterJob class.
- 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) { //Create a workbook Workbook workbook = new Workbook(); //Load an Excel document workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.xlsx"); //Get the first worksheet Worksheet worksheet = workbook.getWorksheets().get(0); //Get the PageSetup object of the first worksheet PageSetup pageSetup = worksheet.getPageSetup(); //Set page margins pageSetup.setTopMargin(0.3); pageSetup.setBottomMargin(0.3); pageSetup.setLeftMargin(0.3); pageSetup.setRightMargin(0.3); //Specify print area pageSetup.setPrintArea("A1:D10"); //Specify title row pageSetup.setPrintTitleRows("$1:$2"); //Allow to print with row/column headings pageSetup.isPrintHeadings(true); //Allow to print with gridlines pageSetup.isPrintGridlines(true); //Allow to print comments as displayed on worksheet pageSetup.setPrintComments(PrintCommentType.InPlace); //Set printing quality (dpi) pageSetup.setPrintQuality(300); //Allow to print worksheet in black & white mode pageSetup.setBlackAndWhite(true); //Set the printing order pageSetup.setOrder(OrderType.OverThenDown); //Fit worksheet on one page pageSetup.isFitToPage(true); //Create a PrinterJob object PrinterJob printerJob = PrinterJob.getPrinterJob(); PageFormat pageFormat = printerJob.defaultPage(); Paper paper = pageFormat.getPaper(); //Set the imageable area of this paper paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight()); //Set the number of copies printerJob.setCopies(1); pageFormat.setPaper(paper); //Call painter to render the workbook in the specified format printerJob.setPrintable(workbook, pageFormat); //Execute print try { printerJob.print(); } catch (PrinterException e) { e.printStackTrace(); } } }
Specify Printer Settings when Printing Excel Documents in Java
In addition to print options, it is important to know how to specify a network connected printer and how to specify other printer settings. The following steps demonstrate how to printer Excel documents with the specified printer settings by using Spire.XLS for Java and PrinterJob class.
- Create a Workbook object.
- Load an Excel file using Workbook.loadFromFile() method.
- Create a PrinterJob object using PrinterJob.getPrinterJob() method.
- Specify printer name using PrinterJob.setPrintService() method.
- Sets the number of copies to be printed using PrinterJob .setCopies() method.
- Calls painter to render the workbook using PrinterJob .setPrintable() method.
- Print the workbook using PrinterJob.print() method.
- 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 { //Create a Workbook object Workbook workbook = new Workbook(); //Load an Excel document workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.xlsx"); //Create a PrinterJob object PrinterJob printerJob = PrinterJob.getPrinterJob(); //Specify printer name PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007"); printerJob.setPrintService(myPrintService); //Create a PageFormat object and set it to the default size and orientation PageFormat pageFormat = printerJob.defaultPage(); //Return a copy of the Paper object associated with this PageFormat. Paper paper = pageFormat .getPaper(); //Set the imageable area of this Paper paper.setImageableArea(0,0,pageFormat .getWidth(),pageFormat .getHeight()); //Set the Paper object for this PageFormat pageFormat .setPaper(paper); //Set the number of copies printerJob .setCopies(1); //Call painter to render the workbook in the specified format printerJob .setPrintable(workbook,pageFormat); //Execute print try { printerJob.print(); } catch (PrinterException e) { e.printStackTrace(); } } //Get print service by printer name private static PrintService findPrintService(String printerName) { PrintService[] printServices = PrinterJob.lookupPrintServices(); for (PrintService printService : printServices) { if (printService.getName().equals(printerName)) { return printService; } } return null; } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.