精华内容
下载资源
问答
  • Java导出数据到Excel表格 今天是2020年2月14日,首先祝各位情人节快乐 下面言归正传开始正文。 在后台管理系统中经常会有导出数据到Excel表格的功能需求,这个功能是难以规避的,而且这也是一个非常使用且人性化的一...

    Java导出数据到Excel表格

    今天是2020年2月14日,首先祝各位情人节快乐
    下面言归正传开始正文。
    在后台管理系统中经常会有导出数据到Excel表格的功能需求,这个功能是难以规避的,而且这也是一个非常使用且人性化的一个功能。下面就给大家分享一下我在项目中实现此功能的方式和方法。
    我使用的是POI进行一个Excel的操作,POI组件是由Apache提供的组件包,主要是为我们的Java程序提供对于office文档的相关操作,废话不多说直接上代码。

    添加依赖(SpringBoot)
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.6</version>
    </dependency>
    
    POI相关组件简介

    HSSFWorkbook:Excel对象,相当于一个 .xls/.xlsx 文件
    HSSFSheet:工作表对象,Excel文件包涵的sheet,一个对象代表一个表单
    HSSFRow:表示表格中的行对象。
    HSSFCell:表示表格中的单元格对象。
    HSSFHeader:Excel文档Sheet的页眉。
    HSSFFooter:Excel文档Sheet的页脚。
    HSSFDataFormat:日期格式。
    HSSFFont:字体对象。
    HSSFCellStyle:单元格样式(对齐样式、边框等)
    HSSFComment:批注(注释)。
    HSSFPatriarch:和HSSFComment用于创建注释的位置。
    HSSFColor:颜色对象。
    HSSFDateUtil:日期辅助工具
    HSSFPrintSetup:打印辅助工具
    HSSFErrorConstants:错误信息表

    首先需要创建一个工具类
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    /**
     * @Auther: ziye
     * @Date: 2020/2/14
     * @Description:
     */
    public class ExcelUtil {
    
        /**
         * 导出Excel
         *
         * @param sheetName sheet名称
         * @param title     标题
         * @param values    内容
         * @param wb        HSSFWorkbook对象
         * @return
         */
        public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) {
    
            // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
            if (wb == null)
                wb = new HSSFWorkbook();
    
            // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet sheet = wb.createSheet(sheetName);
    
            // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
            HSSFRow row = sheet.createRow(0);
    
            // 第四步,创建单元格,并设置值表头 设置表头居中
            HSSFCellStyle style = wb.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
    
            //声明列对象
            HSSFCell cell = null;
    
            //创建标题
            for (int i = 0; i < title.length; i++) {
                cell = row.createCell(i);
                cell.setCellValue(title[i]);
                cell.setCellStyle(style);
            }
    
            //创建内容
            for (int i = 0; i < values.length; i++) {
                row = sheet.createRow(i + 1);
                for (int j = 0; j < values[i].length; j++) {
                    //将内容按顺序赋给对应的列对象
                    row.createCell(j).setCellValue(values[i][j]);
                }
            }
            return wb;
        }
    }
    
    工具类创建完成后就开始进行相关的调用

    便于大家理解和查看代码,我就把调用过程直接写在了Controller层中

        @ResponseBody
        @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
        public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        	SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
            String year = df.format(new Date());
            //为了方便大家理解,选择用获取数据表中的全部数据为例子
            List<Leader> list = leaderService.getList();
            //设置Excel表头
            String[] title = {"ID", "领导姓名", "性别", "电子邮箱", "联系电话", "入职时间"};
            //设置Excel文件名
            String filename = "LeaderList_"+year+".xls";
            //设置工作表名称
            String sheetName = "sheet1";
            //开始对从数据库中获取到的数据进行处理
            String[][] content = new String[list.size()][6];
            try {
                for (int i = 0; i < list.size(); i++) {
                    content[i][0] = String.valueOf(list.get(i).getLeaderId());
                    content[i][1] = list.get(i).getName();
                    if(list.get(i).getSex() == 0){
                    	content[i][2] = "女";
                    }else{
                    	content[i][2] = "男";
                    }
                    content[i][3] = list.get(i).getEmail();
                    content[i][4] = list.get(i).getPhone();
                    content[i][5] = String.valueOf(list.get(i).getIntime());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
            try {
                // 响应到客户端
                this.setResponseHeader(response, filename);
                OutputStream os = response.getOutputStream();
                wb.write(os);
                os.flush();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /**
         * 向客户端发送响应流方法
         *
         * @param response
         * @param fileName
         */
        public void setResponseHeader(HttpServletResponse response, String fileName) {
            try {
                try {
                    fileName = new String(fileName.getBytes(), "UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                response.setContentType("application/vnd.ms-excel");
                response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    

    大家需要注意的一点就是,我这里使用的是GET方式提交,是因为我需要浏览器发送请求时即下载Excel,所以就不能用ajax进行传输

    在页面上的调用方式

    便于理解,我选择了最简单直观的调用方式(JS调用Controller方法)

        <script>
        	function exportExcel(){
        		let url = "/leader/exportExcel";
    			location.href = url;
        	}
        </script>
    

    结语

    以上代码即是本人在实现此功能时所选择的实现方式
    如果文章中有错误,欢迎大家留言指正;若您有更好、更简便的方式来实现此功能,欢迎大家在留言区留下您的建议。

    在这个特殊的情人节,愿:
    你在被打击时,记起你的珍贵,抵抗恶意;
    你在迷茫时,坚信你的珍贵,抛开蜚语;
    爱你所爱 行你所行 听从你心 无问东西

    展开全文
  • 下面是java导出数据到excel表格的具体代码,可以直接运行测试,根据自己的实际数据格式做修改 需要用到org.apache.poi的jar包,可以直接在网上下载,下载地址:...

     下面是java导出数据到excel表格的具体代码,可以直接运行测试,根据自己的实际数据格式做修改

    需要用到org.apache.poi的jar包,可以直接在网上下载,下载地址:http://central.maven.org/maven2/org/apache/poi/poi/3.10.1/poi-3.10.1.jar

    1.主类

    package com.xixi.test;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    public class ExportExcelMain {
    	public static void main(String[] args) {
    		String[] rowsName = new String[] { "序号", "姓名", "年龄", "时间" };
    		List<Object[]> dataList = new ArrayList<Object[]>();
    		Object[] objs = null;
    		for (int i = 0; i < 10; i++) {
    			objs = new Object[rowsName.length];
    			objs[0] = i;
    			objs[1] = i;
    			objs[2] = i;
    			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			String date = df.format(new Date());
    			objs[3] = date;
    			dataList.add(objs);
    		}
    		OutputStream os = null;
    		try {
    			os = new FileOutputStream("C:/Users/Administrator/Desktop/temp/xxxxxx.xls");
    			ExportExcel ex = new ExportExcel("测试数据", rowsName, dataList, os);
    			ex.export();
    			System.out.println("导出成功");
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			try {
    				if (null != os)
    					os.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

    2.工具类

    package com.xixi.test;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRichTextString;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.CellRangeAddress;
    import org.apache.poi.hssf.util.HSSFColor;
    
    public class ExportExcel {
    
    	// 显示的导出表的标题
    	private String title;
    	// 导出表的列名
    	private String[] rowName;
    
    	private List<Object[]> dataList = new ArrayList<Object[]>();
    
    	private OutputStream out;
    
    	// 构造方法,传入要导出的数据
    	public ExportExcel(String title, String[] rowName, List<Object[]> dataList, OutputStream out) {
    		this.dataList = dataList;
    		this.rowName = rowName;
    		this.title = title;
    		this.out = out;
    	}
    
    	/*
    	 * 导出数据
    	 */
    	public void export() throws Exception {
    		try {
    			HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿对象
    			HSSFSheet sheet = workbook.createSheet(title); // 创建工作表
    
    			// 产生表格标题行
    			HSSFRow rowm = sheet.createRow(0);
    			HSSFCell cellTiltle = rowm.createCell(0);
    
    			// sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】
    			HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook);// 获取列头样式对象
    			HSSFCellStyle style = this.getStyle(workbook); // 单元格样式对象
    
    			sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (rowName.length - 1)));
    			cellTiltle.setCellStyle(columnTopStyle);
    			cellTiltle.setCellValue(title);
    
    			// 定义所需列数
    			int columnNum = rowName.length;
    			HSSFRow rowRowName = sheet.createRow(2); // 在索引2的位置创建行(最顶端的行开始的第二行)
    
    			// 将列头设置到sheet的单元格中
    			for (int n = 0; n < columnNum; n++) {
    				HSSFCell cellRowName = rowRowName.createCell(n); // 创建列头对应个数的单元格
    				cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); // 设置列头单元格的数据类型
    				HSSFRichTextString text = new HSSFRichTextString(rowName[n]);
    				cellRowName.setCellValue(text); // 设置列头单元格的值
    				cellRowName.setCellStyle(columnTopStyle); // 设置列头单元格样式
    			}
    
    			// 将查询出的数据设置到sheet对应的单元格中
    			for (int i = 0; i < dataList.size(); i++) {
    
    				Object[] obj = dataList.get(i);// 遍历每个对象
    				HSSFRow row = sheet.createRow(i + 3);// 创建所需的行数
    
    				for (int j = 0; j < obj.length; j++) {
    					HSSFCell cell = null; // 设置单元格的数据类型
    					if (j == 0) {
    						cell = row.createCell(j, HSSFCell.CELL_TYPE_NUMERIC);
    						cell.setCellValue(i + 1);
    					} else {
    						cell = row.createCell(j, HSSFCell.CELL_TYPE_STRING);
    						if (!"".equals(obj[j]) && obj[j] != null) {
    							cell.setCellValue(obj[j].toString()); // 设置单元格的值
    						}
    					}
    					cell.setCellStyle(style); // 设置单元格样式
    				}
    			}
    			// 让列宽随着导出的列长自动适应
    			for (int colNum = 0; colNum < columnNum; colNum++) {
    				int columnWidth = sheet.getColumnWidth(colNum) / 256;
    				for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
    					HSSFRow currentRow;
    					// 当前行未被使用过
    					if (sheet.getRow(rowNum) == null) {
    						currentRow = sheet.createRow(rowNum);
    					} else {
    						currentRow = sheet.getRow(rowNum);
    					}
    					if (currentRow.getCell(colNum) != null) {
    						HSSFCell currentCell = currentRow.getCell(colNum);
    						if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
    							int length = currentCell.getStringCellValue().getBytes().length;
    							if (columnWidth < length) {
    								columnWidth = length;
    							}
    						}
    					}
    				}
    				if (colNum == 0) {
    					sheet.setColumnWidth(colNum, (columnWidth - 2) * 256);
    				} else {
    					sheet.setColumnWidth(colNum, (columnWidth + 4) * 256);
    				}
    			}
    
    			if (workbook != null) {
    				try {
    					workbook.write(out);
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    	}
    
    	/*
    	 * 列头单元格样式
    	 */
    	public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {
    
    		// 设置字体
    		HSSFFont font = workbook.createFont();
    		// 设置字体大小
    		font.setFontHeightInPoints((short) 11);
    		// 字体加粗
    		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    		// 设置字体名字
    		font.setFontName("Courier New");
    		// 设置样式;
    		HSSFCellStyle style = workbook.createCellStyle();
    		// 设置底边框;
    		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		// 设置底边框颜色;
    		style.setBottomBorderColor(HSSFColor.BLACK.index);
    		// 设置左边框;
    		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		// 设置左边框颜色;
    		style.setLeftBorderColor(HSSFColor.BLACK.index);
    		// 设置右边框;
    		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		// 设置右边框颜色;
    		style.setRightBorderColor(HSSFColor.BLACK.index);
    		// 设置顶边框;
    		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		// 设置顶边框颜色;
    		style.setTopBorderColor(HSSFColor.BLACK.index);
    		// 在样式用应用设置的字体;
    		style.setFont(font);
    		// 设置自动换行;
    		style.setWrapText(false);
    		// 设置水平对齐的样式为居中对齐;
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		// 设置垂直对齐的样式为居中对齐;
    		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    
    		return style;
    
    	}
    
    	/*
    	 * 列数据信息单元格样式
    	 */
    	public HSSFCellStyle getStyle(HSSFWorkbook workbook) {
    		// 设置字体
    		HSSFFont font = workbook.createFont();
    		// 设置字体大小
    		// font.setFontHeightInPoints((short)10);
    		// 字体加粗
    		// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    		// 设置字体名字
    		font.setFontName("Courier New");
    		// 设置样式;
    		HSSFCellStyle style = workbook.createCellStyle();
    		// 设置底边框;
    		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    		// 设置底边框颜色;
    		style.setBottomBorderColor(HSSFColor.BLACK.index);
    		// 设置左边框;
    		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    		// 设置左边框颜色;
    		style.setLeftBorderColor(HSSFColor.BLACK.index);
    		// 设置右边框;
    		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    		// 设置右边框颜色;
    		style.setRightBorderColor(HSSFColor.BLACK.index);
    		// 设置顶边框;
    		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    		// 设置顶边框颜色;
    		style.setTopBorderColor(HSSFColor.BLACK.index);
    		// 在样式用应用设置的字体;
    		style.setFont(font);
    		// 设置自动换行;
    		style.setWrapText(false);
    		// 设置水平对齐的样式为居中对齐;
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    		// 设置垂直对齐的样式为居中对齐;
    		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    
    		return style;
    
    	}
    }

    遇到的问题: 

    excel表格后缀我一开始用的是 ".xlsx"   结果发现打不开,改成".xls"就好了。

    原因:

    1、文件格式不同。xls 是一个特有的二进制格式,其核心结构是复合文档类型的结构,而 xlsx 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此。

    2、版本不同。xls是excel2003及以前版本生成的文件格式,而xlsx是excel2007及以后版本生成的文件格式。

    3、兼容性不同。xlsx格式是向下兼容的,可兼容xls格式。

    具体请查阅相关资料。

    展开全文
  • 如果使用POI从Java导出数据到excel表格只需要非常简单的步骤:创建一个workbook我的理解就是新建一个工作空间,即excel文件。创建一个sheet这个就是excel中的sheet创建一个row顾名思义,一个新的列创建一个cell每...

    如果使用POI从Java中导出数据到excel表格只需要非常简单的步骤:

    创建一个workbook

    我的理解就是新建一个工作空间,即excel文件。

    创建一个sheet

    这个就是excel中的sheet

    创建一个row

    顾名思义,一个新的列

    创建一个cell

    每列中的单元格

    往cell里面填充数据

    重复3-5

    在做这些之前你可能还需要导入相应的依赖

    org.apache.poi

    poi-ooxml

    3.9

    Demo

    奉上一个简单的Demo,注释里面写的很清楚,相信可以做到一看就懂。

    public class ExportDemo {

    private static final List userInformationList = Arrays

    .asList(new UserInformation("张飞", "三哥@sg.com", 14),

    new UserInformation("刘备", "大弟@sg.com", 28),

    new UserInformation("关羽", "二哥@sg.com", 27));

    private static final String[] titles = {"序号", "用户名", "邮箱", "年龄"};

    public static void main(String[] args) {

    //创建一个workbook

    XSSFWorkbook workbook = new XSSFWorkbook();

    //创建一个sheet

    XSSFSheet sheet = workbook.createSheet("sheet");

    //创建一列

    XSSFRow row = null;

    //创建一个单元格

    XSSFCell cell = null;

    try {

    //设置标题

    row = sheet.createRow(0);

    for (int i = 0; i < titles.length; i++) {

    //创建单元格

    cell = row.createCell(i);

    cell.setCellValue(titles[i]);

    }

    //设置内容

    for (int i = 0; i < userInformationList.size(); i++) {

    //获取实例

    UserInformation userInformation = userInformationList.get(i);

    //设置序号

    int index = i + 1;

    row = sheet.createRow(index);

    //将序号内容存入单元格

    row.createCell(0).setCellValue(index);

    //将用户名内容存入单元格

    if (StringUtils.isNotBlank(userInformation.getUsername())) {

    row.createCell(1).setCellValue(userInformation.getUsername());

    }

    //将邮箱内容存入单元格

    if (StringUtils.isNotBlank(userInformation.getEmail())) {

    row.createCell(2).setCellValue(userInformation.getEmail());

    }

    //将年龄内容存入单元格

    if (null != userInformation.getAge()) {

    row.createCell(3).setCellValue(userInformation.getAge());

    }

    }

    FileOutputStream out = new FileOutputStream("h:\\workbook.xls");

    try {

    workbook.write(out);

    out.flush();

    out.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    }

    }

    结果:

    f9e1205b61a4e18205b71a9ae676a672.png

    工具类

    市面上有很多开源的工具类,非常的方便,虽然不提倡反复的造轮子,但是再造轮子的过程中,可以让自己提升,下面的链接时笔者自己开发的一个工具类,非常简单,也做了很多注释。希望可以帮到大家。

    展开全文
  • 期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询的数据,其中导出数据到Excel最常见,基本上...

    da0ac7ff8e18791fc589a9be8f9e0ec9.gif

    一、前言

    用Qt开发已经九年了,期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询的数据,其中导出数据到Excel最常见,基本上有三种方法。

    方法一使用QAxObject,小数据量还可以,数据量一大直接懵逼,性能指数级下降,而且不支持跨平台,只能在WIN上玩一玩,对于大量的linux开发者来说,直接废了。

    方法二使用第三方开源的QtXlsx,这个做的还是可以,使用人群也比较多,据说不依赖office组件跨平台的,缺点就是不支持xls格式,只支持高版本的xlsx,使用稍微比较繁琐,用户更多的需要的是直接一个函数传入对应的数据即可,越简单越好。

    方法三使用csv格式作为导出数据,纯文本的数据存储格式,默认逗号作为分隔符,也可以指定其他符号作为分隔符,csv格式也是各种表格软件都支持的格式,相当轻便,作为各大系统或者平台和编程语言之间交互数据还是非常方便的,很多工业控制领域的软件都会采用这种格式,缺点就是太简单了,不能分组或者指定过滤条件特殊颜色显示等。

    在对比了三种方式以后,决定自己造个轮子,主要是为了自身项目的需要写的,后面慢慢的客户需求多了,增加了通用常用场景的数据导出需求,目标要求至少包含三点:速度够快、使用够简洁、不依赖任何组件。

    Demo示例地址:[https://pan.baidu.com/s/1uQsDQO5E5crUBN2J-nPeLQ](https://pan.baidu.com/s/1uQsDQO5E5crUBN2J-nPeLQ) 提取码:1jkp 名称:bin_dataout.zip

    二、功能特点

    1. 原创导出数据机制,不依赖任何office组件或者操作系统等第三方库,尤其是支持嵌入式linux。
    2. 10万行数据9个字段只需要2秒钟完成。
    3. 只需要四个步骤即可开始急速导出大量数据到Excel。
    4. 同时提供直接写入数据接口和多线程写入数据接口,不卡主界面。
    5. 可设置标题、副标题、表名。
    6. 可设置字段名称、列宽度。
    7. 可设置是否启用校验过滤数据、校验的列、校验规则、校验值,符合规则的特殊颜色显示。
    8. 可设置随机背景颜色及需要随机背景色的列集合。
    9. 支持分组输出数据,比如按照设备分组输出数据,方便查看。
    10. 可自定义行内容分隔符。
    11. 可追加数据形式写入数据,建议每次追加的数据小于10000条。
    12. 灵活性超高,可自由更改源码设置对齐方式、文字颜色、背景颜色等。
    13. 支持任意excel表格软件,包括但不限于excel2003/2007/2010/2013/2017/wps/openoffice等。
    14. 除了提供导出到Excel类以外,还提供导出到Pdf文件以及打印数据的类。
    15. 注释完善,详细完整的使用demo,支持QTableWidget、QTableView、数据库三种数据源。
    16. 纯Qt编写,支持任意Qt版本+任意编译器+任意系统。

    三、效果图

    34b479c414b29ca690dff06953826f00.gif

    四、使用方法

    //第一步:设置文件路径,标题等信息;
    QList<QString> columnNames;
    QList<int> columnWidths;
    columnNames << "防区号" << "防区名称" << "告警类型" << "告警内容" << "告警时间";
    columnWidths << 65 << 100 << 120 << 150 << 180;
    
    QString file = qApp->applicationDirPath() + "/1.xls";
    ExcelThread::Instance()->init();
    ExcelThread::Instance()->setFileName(file);
    ExcelThread::Instance()->setSheetName("告警信息");
    ExcelThread::Instance()->setTitle("所有告警信息");
    ExcelThread::Instance()->setSubTitle(QString("%1 导出告警信息").arg(DATETIME));
    ExcelThread::Instance()->setColumnNames(columnNames);
    ExcelThread::Instance()->setColumnWidths(columnWidths);
    
    //第二步:打开文件,启动线程;
    ExcelThread::Instance()->open();
    ExcelThread::Instance()->start();
    
    //第三步:逐行输入数据;
    QStringList list;
    list << "防区上线" << "防区离线" << "防区旁路" << "防区报警" << "防区故障";
    for (int i = 0; i < logCount; i++) {
        int index = qrand() % 4;
        QStringList temp;
        temp.append(QString::number(i + 1));
        temp.append("防区" + QString::number(i + 1));
        temp.append("主机上报");
        temp.append(list.at(index));
        temp.append(DATETIME);
        ExcelThread::Instance()->appendContent(temp.join(";"));
    }
    
    //第四步:关闭文件,关闭线程;
    ExcelThread::Instance()->close();
    ExcelThread::Instance()->stop();
    展开全文
  • 开发中难免会遇到要导出数据到excel的,网上有很多方法,但是看起来都很复杂的样子,写得又非常多代码,让人望而止步.我做一个简单的导出excel表格功能.这是我在工作上用到的. 1.需要用到的jar <dependency>...
  • php中文网最新课程每日17点准时技术干货分享1、先在github...http://www.php.cn/xiazai/leiku/14912、解压之后把它复制extend里面控制器代码如下:/*** Created by PhpStorm.* User: luxiao* Date: 2017/5/8* Ti...
  • 本示例是快速将查询的结果导出到excel 中,如果用我的代码只需要修改查询数据的sql、excel文件名、excel的sheet标题、内容的标题即可。 POI简介:Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有...
  • java批量导出数据到excel 使用hutool中的导出工具 1. 需要的依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.0.7</...
  • 1、需求将用户id、姓名及其各类型假期剩余天数导出到数据库中;将Excel文件命名为用户假期信息表-2019-06-10样式的,日期是当天日期;1.1、设计导出文件外观1.2、设计导出内容样式前端的基本上不用写了,涉及的...
  • 如何将数据导出到Excel表格 : 实体对象 package com.cn; public class Dome { private String id; private String name; private String pid; public String getId() { return id; } public void setId...
  • Java 导出数据库数据到Excel表格中1、需求1.1、设计导出文件外观:1.2、设计导出内容样式:2、控制层 Controller2.1、exportHolidy方法2.2、UserHolidyParam查询参数对象3、Service层3.1、exportAllHolidyInfo方法...
  • Java使用poi导出数据到excel表格并下载1 String path = "ExportToExcel"; //自己放常量的地方声明变量 // 取得互联网程序的绝对地址 String realPath = request.getSession().getServletContext...
  • Java结合VUE实现导出数据到Excel表格,同时解决了单元格合并,导致单元格样式不生效问题 页面预览: 1.前台展示页面 2.导出的Excel 3.Java后台中传入的参数 代码实现 1.VUE代码: <template> <el-...
  • 利用Java+JavaScript从页面导出数据到Excel表格 先来几张效果图,再贴代码, 第一步点击导出按钮 第二步点击确认 最后点击左下角表格打开Excel,查看导出数据是否完整 具体实现如下 JavaScript...
  • * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据EXCEL 的形式输出指定IO设备上 * * @param title * 表格标题名 * @param headers * 表格属性列名数组 * @...
  • Java 导出数据到Excel

    2017-09-12 10:58:55
    **连接MySql数据库,查询出数据,并导出数据到Excel表格.** public static void main(String[] args) { //声明Connection对象 Connection con; //驱动程序名 String driver = "com.mysql.jdbc.D
  • Java导出数据库数据到Excel表格三级动态表头 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本...
  • 将数据库数据导出到excel表格,本文只是将数据库数据生成到本地桌面的score.xls中。若想实现用户下载服务器端生成的表格到用户本地功能,需要先在服务器端生成表格中的数据,然后在服务器端生成此excel表格,然后从...
  • Java中添加从Excel表格中导入数据和将数据导出到Excel表格并下载 jsp页面 总共需要添加四个按钮: 1.选择导入的Excel 文件按钮 2.上传按钮 3.关闭按钮 4.导出Excel文件按钮 上传文件时我利用了表单来导入,在用户...
  • 引言:什么是Apache POI?...简单点来说就是可以利用POI来进行数据的导入导出操作,本篇文章主要说明使用Apache POI导出数据到Excel表格。 1.使用Apache POI需要导入相关的依赖,在pom.xml文件中...
  • Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; ...
  • 主要有一下几步: 1.导入需要的jar:freemarker-2.3.19.jar。...2.根据需要作出导出模板 3.在WebRoot下面建template文件夹,把制作的模板扔这个文件夹下面 4.编写核心代码 具体实施细节: 制作模板:
  • 功能:java数据导出到Excel表格
  • 首先是实体类:CustomerInfo package com.nz.entity; import java.util.Date; /** * @Author xxs * @Date 2020/4/16 17:29 */ public class CustomerInfo { private Integer id; private String custo...
  • java实现JSP表格数据导出到EXCEL文件 java实现JSP表格数据导出到EXCEL文件 java实现JSP表格数据导出到EXCEL文件 java实现JSP表格数据导出到EXCEL文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382
精华内容 152
关键字:

java导出数据到excel表格

java 订阅