java打印Excel表格

这里用servlet简单介绍一下java打印报表

1.无合并行/列

package weaver.xhyy.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.xhyy.sap.SearchYhdzxx;

/**
 * 打印银行对账信息
 * 
 * @author Yuk
 * 
 */
public class GetYhdzxxExcelServlet extends HttpServlet {
    protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        BaseBean log = new BaseBean();
        log.writeLog("开始导出院外来款查询");
        User user = HrmUserVarify.getUser (request , response) ;
        String beginDate = Util.null2String(request.getSession().getAttribute("beginDate"));
        String endDate = Util.null2String(request.getSession().getAttribute("endDate"));

        Map<String, String> otherparams = new HashMap<String, String>();
        otherparams.put("beginDate", beginDate);
        otherparams.put("endDate", endDate);
        // 调用【获取银行对账信息】
        SearchYhdzxx search = new SearchYhdzxx();
        List<Map<String, String>> list = search.getYhdzxx(user, otherparams, request, response);


        request.setCharacterEncoding("utf-8");
        response.setContentType("application/vnd.ms-excel;charset=utf-8");

        String context = "院外来款查询";

        response.setHeader("Content-Disposition", "attachment; filename=\""
                + URLEncoder.encode(context, "utf-8") + ".xls\"");

        // 新建EXCEL文件
        File downloadFile = new File(request.getSession().getServletContext()
                .getRealPath(
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Java打印Excel表格的方法有很多种,下面介绍其中一种常用的方法: 1. 使用Apache POI库读取Excel文件数据并生成打印内容。 2. 创建一个打印Job对象,并设置打印属性。 3. 使用Java打印API中的PrinterJob类进行打印操作。 示例代码如下: ``` import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelPrinter { public void print(String filePath) throws IOException, PrinterException { FileInputStream fis = new FileInputStream(filePath); // 创建workbook对象 Workbook workbook = WorkbookFactory.create(fis); // 获取第一个sheet页 Sheet sheet = workbook.getSheetAt(0); // 获取行数和列数 int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1; int columnCount = sheet.getRow(0).getLastCellNum(); // 生成打印内容 StringBuilder sb = new StringBuilder(); for (int i = 0; i < rowCount; i++) { Row row = sheet.getRow(i); for (int j = 0; j < columnCount; j++) { Cell cell = row.getCell(j); sb.append(cell.getStringCellValue()).append("\t"); } sb.append("\n"); } // 创建打印job对象 PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(new PrintableExcel(sb.toString())); // 设置打印属性 job.setJobName("Excel打印"); job.setCopies(1); // 执行打印操作 job.print(); } public static void main(String[] args) throws IOException, PrinterException { ExcelPrinter printer = new ExcelPrinter(); printer.print("D:\\test.xlsx"); } } class PrintableExcel implements Printable { private String content; public PrintableExcel(String content) { this.content = content; } @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex == 0) { Graphics2D g2d = (Graphics2D) graphics; g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); Font font = new Font("宋体", Font.PLAIN, 12); g2d.setFont(font); StringReader sr = new StringReader(content); BufferedReader br = new BufferedReader(sr); float lineHeight = font.getSize2D() * 1.2f; float y = 0; String line; try { while ((line = br.readLine()) != null) { y += lineHeight; g2d.drawString(line, 0, y); } } catch (IOException e) { e.printStackTrace(); } return PAGE_EXISTS; } else { return NO_SUCH_PAGE; } } } ``` 以上代码中,我们使用Apache POI库读取Excel文件的数据,并将其生成打印内容。 然后,我们创建一个PrintableExcel类实现Printable接口,将生成的打印内容打印打印设备上。 最后,我们使用Java打印API中的PrinterJob类创建打印Job对象,并设置打印属性,执行打印操作。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值