java生成excel并可以导出
package com.census.service.daoImpl;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.annotation.Resource;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Component;
import com.census.bean.Residence;
import com.census.bean.Student;
import com.census.dao.StudentDao;
import com.census.service.dao.StudentServiceDao;
@Component
public class StudentServiceDaoImpl implements StudentServiceDao {
//这里需要引入poi-2.5.1.jar
public InputStream getInputStream(String stno)
{
//生成HSSFWorkbook对象,他就像excel文件本身
HSSFWorkbook wb = new HSSFWorkbook();
//创建excel表格的一个sheet(默认三个),存放表数据
HSSFSheet sheet = wb.createSheet("sheet1");
//创建一个行,每一行和每个单元都是从0开始
HSSFRow row = sheet.createRow(0);
//创建单元格(第一行为表头)
HSSFCell cell = row.createCell((short) 0);
//设定字符编码ENCODING_UTF_16(每个都要设)
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//设置单元格存放内容
cell.setCellValue("学号");
cell = row.createCell((short) 1);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("姓名");
cell = row.createCell((short) 2);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("性别");
cell = row.createCell((short) 3);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("院系");
cell = row.createCell((short) 4);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("班级");
cell = row.createCell((short) 5);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("专业");
cell = row.createCell((short) 6);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("入学时间");
cell = row.createCell((short) 7);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("身份证号码");
cell = row.createCell((short) 8);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("民族");
cell = row.createCell((short) 9);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("出生日期");
cell = row.createCell((short) 10);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("政治面貌");
cell = row.createCell((short) 11);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("籍贯");
cell = row.createCell((short) 12);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("文化程度");
cell = row.createCell((short) 13);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("户口类别");
//以上创建的是表头,下面创建的是表内容,[循环]插入数据库数据
//[如果多条记录循环每次循环写入一行数据]
Student st=getStudentByStudentNo(stno);
Residence residence=st.getResidence();
/***************************************************************/
//创建一个行,每一行和每个单元都是从0开始
HSSFRow row2 = sheet.createRow(1);
HSSFCell cell2= row2.createCell((short) 0);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getStudentNo());
cell2 = row2.createCell((short) 1);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getStudentName());
cell2 = row2.createCell((short) 2);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getStudentSex());
cell2 = row2.createCell((short) 3);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getDepartMent());
cell2 = row2.createCell((short) 4);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getStudentClass());
cell2= row2.createCell((short) 5);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getSpecialty());
cell2 = row2.createCell((short) 6);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(st.getEntertag().toLocaleString());
cell2 = row2.createCell((short) 7);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getIdNo());
cell2 = row2.createCell((short) 8);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getNation());
cell2 = row2.createCell((short) 9);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getBirthDate().toLocaleString());
cell2 = row2.createCell((short) 10);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getPolitics());
cell2 = row2.createCell((short) 11);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getNativePlace());
cell2 = row2.createCell((short) 12);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getEducation());
cell2 = row2.createCell((short) 13);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue(residence.getResidencetype());
ByteArrayOutputStream os = new ByteArrayOutputStream();
try
{
wb.write(os);
}
catch (IOException e)
{
e.printStackTrace();
}
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
return is;
}
public Student getStudentByIdNo(String idNo) {
return studentDao.getStudentByIdNo(idNo);
}
@Resource
StudentDao studentDao;
public void deleteStudent(Student student) {
studentDao.deleteStudent(student);
}
public void insertSudent(Student student) {
studentDao.insertSudent(student);
}
public Student getStudentByStudentNo(String id) {
return studentDao.getStudentByStudentNo(id);
}
public void updateStudent(Student student) {
studentDao.updateStudent(student);
}
}