一、前言

第一次开始记录自己学的东西,感觉不一样啊。本人Java新手,希望大佬们指正指正(?)

二、两种导出excel的方式

  1. 通过sql语句直接导出excel表,但是有一点缺点,就是excel没有列名,相当于只有数据库表的记录而已,没有属性名。并且excel表的每一格的样式不可以设置。(不推荐)
  2. java代码连接数据库导出excel表格,可以修改单元格样式,添加每一列的列名(推荐)

三、具体实现

sql语句如下:

use one;//使用哪一个数据库
select * from tb_driver order by id asc into outfile "G:/2.xls" character set gbk;

sql语句导出excel文件注意事项

  1. 对于我这里只可以导出xls文件,另外一种xlsx我电脑上打不开,之后遇到需要导出xlsx文件,我会补充在这?
  2. 在我这设置了导出文件的编码格式为gbk,不设置的话中文会显示乱码。这是excel表格打开文件的编码引起的(我认为,网上说excel打开文件默认gbk编码打开)

通过java实现导出待列名的excel表

Java代码如下

package function.java.utils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

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;
import org.apache.poi.ss.usermodel.HorizontalAlignment;


public class DataToExcel {
	/**
	 * @Title: ToExcel
	 * @Description: TODO 导出excel表格
	 * @Param: @param rowDatas 每一条记录,就是总的记录, List<List<Object>> 第一个是列名,后面的才是记录,
	 * @Param: @param outputType 导出的种类 藕塘putType -1代表导出到本地,1代表网页上导出,下载
	 * @Param: @param path 导出的路径,如果是导出到本地
	 * @Param: @param fileName 导出的文件名
	 * @Param: @param response 用于下载
	 * @Param: @return true|false
	 * @Return: boolean 
	 * @Throws
	 */
	public static boolean ToExcel(List<List<Object>>rowDatas, Integer outputType, String path, String fileName, final HttpServletResponse response) {
		@SuppressWarnings("resource")
		HSSFWorkbook wb = new HSSFWorkbook();//定义一个excel文件
		HSSFSheet sheet = wb.createSheet();//创建第一页
		HSSFCellStyle style = wb.createCellStyle();//创建样式风格
		style.setAlignment(HorizontalAlignment.CENTER);//为样式设置值,这里是居中
		HSSFRow row;
		HSSFCell cell;
		for(int i = 0; i < rowDatas.size(); i++) {
			row = sheet.createRow(i);
			for(int j = 0; j < rowDatas.get(i).size(); j++) {
				cell = row.createCell(j);//创建单元格
				cell.setCellStyle(style);//单元格应用样式
				Object o = rowDatas.get(i).get(j);
				//转换为文本格式,这样在导出文件中展示完全,可以自己尝试
				if(o instanceof Integer || o instanceof Double || o instanceof Float)
					cell.setCellValue(Double.parseDouble(""+o));//这里转换为文本格式
				else {
					cell.setCellValue(""+o);//这里转换为文本格式
				}
			}
		}
		if(outputType==-1) {
			try {
				FileOutputStream fout = new FileOutputStream(path+"//"+fileName);
				wb.write(fout);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		else if(outputType == 1) {
			OutputStream out = null;  
			try {  
				out = response.getOutputStream();   
				response.setContentType("application/x-msdownload");  
				response.setHeader("Content-Disposition", "attachment; filename="  
						+ URLEncoder.encode(fileName, "UTF-8"));  
				wb.write(out);  
			} catch (Exception e) {  
				e.printStackTrace();  
			} finally {    
				try {     
					out.close();    
				} catch (IOException e) {    
					e.printStackTrace();  
				}    
			}   
		}
		return false;
	}

	public static void main(String args[]) {
		//实例
		List<List<Object>>rowDatas = new ArrayList<List<Object>>();
		List<Object>datas = null;
		for(int j = 0; j < 5; j++) {
			datas = new ArrayList<Object>();
			for(int i = 0; i < 10;i++) {
				datas.add(i+"");
			}
			rowDatas.add(datas);
		}
		DataToExcel.ToExcel(rowDatas, -1,"G:", "tb.driver.xls", null);
		System.out.println("OKs");
	}
}

代码说明

如果看不懂,那请注意看一下这个说明
上述代码是一个静态工具类。

方法ToExcel是实现一个List<List>rowDatas中的数据导出成excel表中的数据,get(0)是列名,后面的才是数据。

outputType代表输出种类,其实用户下面判断,-1代表导出到本地,1代表网页上用于下载的.

path代表导出路径,比如可以是“G:”,或者“F:”,或者"G:/1"(代表g盘的文件夹1下面)

fileName代表文件名称,比如“one.xls”, “two.xls”,

response如果是想导出excel,通过网页上点击导出然后下载的话,就需要传递response对象进来

Java导出excel注意事项

  1. List<List>rowDatas中第一个(就是get(0)这里代表列名)代表的列名,后面的代表的记录数据
  2. 设置的单元格样式可以更改
  3. 这里需要导入某一个jar包。这里给这个jar的下载地址http://central.maven.org/maven2/org/apache/poi/poi/4.1.0/poi-4.1.0.jar。这是直接到maven中下的

可以直接复制代码,在eclipse中运行,直接成功,然后自己分析

总结

这是很久之前写的代码,突然想记录下来,以便下次参考,小白第一次写≧ ﹏ ≦,有点说不清楚,大家不要见怪"★,°:.☆( ̄▽ ̄)/$:.°★ 。"