在数据处理过程中,将数据库中的数据导出为Excel表格是一项非常常见的操作。利用Java可以快速、高效地将数据导出为Excel表格,大大提高了数据处理效率和准确性。
一、Java实现Excel导出的准备工作
在使用Java实现Excel导出之前,需要进行一些准备工作,包括:
1、引入POI和Excel工具包
POI和Excel工具包是用于实现Java导出Excel的重要工具,需要先引入这两个工具包。
2、连接数据库
要导出数据库的数据,需要先连接数据库,获取需要导出的数据。
3、创建Excel文件
在导出数据之前,需要先创建一个Excel文件,将需要导出的数据写入到这个文件中。
二、将数据导出为Excel表格的具体实现
1、创建Excel文件
我们需要创建一个Excel文件,以便把数据写入到其中。创建Excel文件的步骤如下:
“`
//创建工作簿
Workbook workbook=new HSSFWorkbook();
//创建工作表
Sheet sheet =workbook.createSheet(“sheet1”);
“`
这里我们创建了一个工作簿和一个工作表。其中工作簿是Excel的更高级别的中间对象,而工作表则是工作簿下的具体表格。
2、获取需要导出的数据,并将其写入到Excel文件中
在准备工作完成之后,我们需要从数据库中获取需要导出的数据,并将其写入到创建好的Excel文件中。具体的实现方法如下:
“`
//获取连接
Connection con=this.getConnection();
Statement st = null;
ResultSet rs = null;
try {
st = con.createStatement();
rs = st.executeQuery(“select * from student”);//查询的SQL语句
int rowNum = 1;
// 添加excel的表头
Row headRow = sheet.createRow(0);
ResultSetMetaData rd = rs.getMetaData();
for (int i = 1; i
String columnName = rd.getColumnName(i);
Cell headCell = headRow.createCell(i-1);
headCell.setCellValue(columnName);
}
while(rs.next()){
Row row = sheet.createRow(rowNum);
for(int i=0;i
Cell cell = row.createCell(i);
Object objVal = rs.getObject(i+1);
if(objVal!=null){
cell.setCellValue(objVal.toString());
}
}
rowNum++;
}
}catch(Exception e){
e.printStackTrace();
} finally {
try{
if(st!=null) st.close();
if(rs!=null) rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
“`
在写入数据的过程中,我们需要注意如下问题:
① 在写入数据之前,我们需要先添加Excel表格的表头,以便于查看数据的内容;
② 在从ResultSet对象中获取每列对应的列名、列类型和列值时,一定要使用ResultSetMetaData类的方法来获取,这样可以更好的获取元数据信息,更加准确地组织数据。
3、保存Excel文件
数据写入Excel文件结束后,我们需要将这个文件保存到本地,可以使用FileOutputStream实现文件的输出和保存。具体的实现方法如下:
“`
File file = new File(“D:/student.xlsx”);
FileOutputStream fos = null;
try {
if(!file.exists()){
file.createNewFile();
}
fos=new FileOutputStream(file);
workbook.write(fos);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
“`
在保存Excel文件的过程中,我们需要注意如下问题:
① 在保存Excel文件之前,需要先判断文件是否存在,如果不存在,则需要创建新的文件;
② 在保存Excel文件之前,需要使用FileOutputStream来创建文件输出流,将文件的输出流与Excel文件进行关联,最后调用workbook.write(fos)方法来写入数据。
三、
利用Java实现数据库数据导出为Excel表格是一项非常实用的技术,可以大大提高数据处理的效率和准确性。Java中提供了POI和Excel工具包可以用来快速导出Excel文件,并且通过连接数据库和使用ResultSet对象可以快速获取需要导出的数据,然后将数据写入到Excel文件中并保存到本地。
相关问题拓展阅读:
java导出excel
试试double型
java导出Excel
java 代码 /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.axon.fable.sams.view.action; import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.serv …
java导出Excel例举方式
方法一:导出Excel数据的插件jexcelapi
程序实例如下:
public void exportClassroom(OutputStream os) throws PaikeException {
try {
WritableWorkbook wbook = Workbook.createWorkbook(os); //建立excel文件
WritableSheet wsheet = wbook.createSheet(“教室信息表”, 0); //工作表名称
//设置Excel字体
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat titleFormat = new WritableCellFormat(wfont);
String title = { “教室名”, “容 量”, “类 型”, “其他说明”兆源 };
//设置锋猜渗银脊Excel表头
for (int i = 0; i
Label excelTitle = new Label(i, 0, title, titleFormat);
wsheet.addCell(excelTitle);
}
int c = 1; //用于循环时Excel的行号
ClassroomService cs = new ClassroomService();
List list = cs.findAllClassroom(); //这个是从数据库中取得要导出的数据
Iterator it = list.iterator();
while (it.hasNext()) {
ClassroomDTO crdto = (ClassroomDTO) it.next();
Label content1 = new Label(0, c, crdto.getRoomname());
Label content2 = new Label(1, c, crdto.getCapicity().toString());
Label content3 = new Label(2, c, crdto.getRoomTypeId()
.toString());
Label content4 = new Label(3, c, crdto.getRemark());
wsheet.addCell(content1);
wsheet.addCell(content2);
wsheet.addCell(content3);
wsheet.addCell(content4);
c++;
}
wbook.write(); //写入文件
wbook.close();
os.close();
} catch (Exception e) {
throw new PaikeException(“导出文件出错”);
}
}
方法二:直接用Java代码实现导出Excel报表
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.axon.fable.sams.view.action;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.axon.fable.empolderpackage.out.OutJavaScript;
import com.axon.fable.empolderpackage.page.Pager;
import com.axon.fable.empolderpackage.string.MyPublic;
import com.axon.fable.sams.common.BaseAction;
import com.axon.fable.sams.exception.AppBusinessException;
import com.axon.fable.sams.exception.AppSystemException;
/**
* MyEclipse Struts
* Creation date:
*
* XDoclet definition:
* @struts.action path=”/axon” name=”axonForm” input=”/samspage/zm/axon.jsp” parameter=”method” scope=”request” validate=”true”
* @struts.action-forward name=”success” path=”/samspage/zm/content.jsp”
*/
public class StshipoperationAction extends BaseAction {
/*
* Generated Methods
*/
private static Session session=null;
private static Transaction ts=null;
private static Query queryC=null;
private static Query queryR=null;
private static Query query=null;
private static List list=null;
private static Integer startRow;
private static Integer ncurrentPage;
private static Integer cell;
private static String property;
private static String sql;
private static String type;
private static String condition ;//是否导出当前页
private static String currentPage;
private static String from ;
private static String pactdata;
private static String voyagename;
private static String voyageno;
private static String dwt ;
private static String hirefrom ;
private static String deliveryposion ;
private static String redeliveryposion ;
private static String sheepowner ;
private static String addr;
private static String addcomm;
private static String rent;
private static String fileName ;
private static OutputStream os;
@Override
public ActionForward findAll(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public ActionForward findById(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
public static String strNull(Object nullStr,String newStr,Integer cell){
if(nullStr==null||nullStr.equals(“”)){return newStr;}else{cell+=1;return nullStr+””;}
}
public static String getStr(String str,Integer cell){
if(str==null||str.trim().equals(“”)){return “”;}else{cell+=1;return “,”+str;}
}
public static String getExcelTile(String title){
if(title==null)
return “”;
if(title.equals(“modela.stsid”))
return “编号”;
if(title.equals(“modelc.pactdata”))
return “合同日期”;
if(title.equals(“modela.voyagename”))
return “航名”;
if(title.equals(“modela.voyageno”))
return “航次”;
if(title.equals(“modelc.dwt”))
return “DWT”;
if(title.equals(“modelc.hirefrom”))
return “受载期”;
if(title.equals(“modela.deliveryposion”))
return “交船地点”;
if(title.equals(“modela.redeliveryposion”))
return “还船地点”;
if(title.equals(“modelc.sheepowner”))
return “联系人”;
if(title.equals(“modelc.addr”))
return “经纪人拥金”;
if(title.equals(“modelc.addcomm”))
return “ADD COMM”;
if(title.equals(“modelc.rent”))
return “租金”;
return “”;
}
public ActionForward exporVoyagesInfoToExcel(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
list=null;
startRow=0;
ncurrentPage=1;
cell=0;
type =request.getParameter(“type”);
condition =request.getParameter(“condition”);//是否导出当前页
currentPage =request.getParameter(“currentPage”);
from =request.getParameter(“from”);
pactdata = request.getParameter(“modelc.pactdata”);
voyagename = request.getParameter(“modela.voyagename”);
voyageno = request.getParameter(“modela.voyageno”);
dwt = request.getParameter(“modelc.dwt”);
hirefrom = request.getParameter(“modelc.hirefrom”);
deliveryposion = request.getParameter(“modela.deliveryposion”);
redeliveryposion = request.getParameter(“modela.redeliveryposion”);
sheepowner = request.getParameter(“modelc.sheepowner”);
addr = request.getParameter(“modelc.addr”);
addcomm = request.getParameter(“modelc.addcomm”);
rent = request.getParameter(“modelc.rent”);
if(type!=null&&type.trim().equals(“1”)){
type =”已还船舶–费用未结清”;
}else{
type =”已还船舶–费用已结清”;
}
property =getStr(pactdata,cell)+getStr(voyagename,cell)+getStr(voyageno,cell)+getStr(dwt,cell)+getStr(hirefrom,cell)
+getStr(deliveryposion,cell)+getStr(redeliveryposion,cell)+getStr(sheepowner,cell)+getStr(addr,cell)+getStr(addcomm,cell)
+getStr(rent,cell);
property = property.substring(1);
String split = property.split(“,”);
// System.out.println(“-property:”+property);
if(currentPage!=null&&!currentPage.trim().equals(“”)){
ncurrentPage =Integer.parseInt(currentPage);
}else{
OutJavaScript.outString(response, “Sorry! Failed to get information of pager.”);
return null;
}
try {
session =getServiceLocator().getBaseHibernateDAO().getSession();
sql =”select count(*) “+from;
query =session.createQuery(sql);
list = query.list();
for (int i = 0; i
totalSize =(Integer)list.get(i);
if(totalSize!=0){
pager =new Pager(ncurrentPage,totalSize);
}
}
query =getServiceLocator().getBaseHibernateDAO().getSession().createQuery(“select ” +property+from);
if(condition!=null&&condition.trim().equals(“1”)){//分页数据
startRow = (ncurrentPage – 1)*pager.getPageSize();
query.setFirstResult(startRow);
query.setMaxResults(pager.getPageSize());
// System.out.println(“query:”+query);
}
list = query.list();
fileName = “shipInfo”;
os = response.getOutputStream();
response.reset();
response.setHeader(“Content-disposition”,
“attachment; filename=” +fileName + “.xls”);
response.setContentType(“application/msexcel”);
jxl.write.WritableWorkbook wbook = Workbook.createWorkbook(os);
jxl.write.WritableSheet wsheet = wbook.createSheet(“the first sheet”, 0);
for (int i = 0; i
jxl.write.Label wlabel0;
wlabel0 = new jxl.write.Label(i, 0, getExcelTile(split));
wsheet.addCell(wlabel0);
}
jxl.write.Label wlabel1;
for(int i=0;i
if(split.length==1){
Object strval = (Object) list.get(i);
String javaScript=””+MyPublic.toHtmlStr(strval==null?””:strval.toString().trim())+””;
wlabel1 = new jxl.write.Label(0, i+1,strval==null?””:strval.toString().trim() );
wsheet.addCell(wlabel1);
}else{
Object strval = (Object) list.get(i);
for(int j=0;j
String javaScript=””+MyPublic.toHtmlStr(strval==null?””:strval.toString().trim())+””;
//System.out.println(“===================script:”+javaScript);
wlabel1 = new jxl.write.Label(j, i+1,strval==null?””:strval.toString().trim() );
wsheet.addCell(wlabel1);
}
}
}
wbook.write();
response.flushBuffer();
wbook.close();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! Export Excel exception.”);
e.printStackTrace();
} catch (HibernateException e1) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! Database exception.”);
e1.printStackTrace();
} catch (AppSystemException e1) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! System exception.”);
e1.printStackTrace();
} catch (AppBusinessException e1) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! Database exception.”);
e1.printStackTrace();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! Export Excel exception.”);
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
OutJavaScript.outString(response, “Sorry! Export Excel exception.”);
e.printStackTrace();
}
return null;
}
@Override
public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
}
还有其他很多种 字数限制 无法一一举例方式
这个好像不能实现吧,导出的应该都是文本的!
如何从java输出到excel
用JAVA程序,读取或者写入excel文件戚岁,通过用jxl或者poi,下面是我给你写的例子。分别是用jxl读写excel文件,用poi读写excel文件。希望对你有帮助。(需要下载jxl和poi的jar包仿蚂)
package util.excel;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;
public class ExcelUtil {
/**
* @param args
* @throws IOException
*/
public static void main(String args) throws IOException {
String outFile = “D:/workspace/JavaStudy/src/util/excel/test.xls”;
ExcelUtil.writeExcelByJXL(outFile, null);
}
/**
*
* @title: readExcelByJXL
* @description: 通过jxl读取excel文件
* @author yu ren tian
* @param excelFile
* @return
* @throws IOException
*/
private static List readExcelByJXL(String excelFile) throws IOException {
List rtn = new ArrayList();
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(excelFile);
Workbook excelWorkBook = Workbook.getWorkbook(fileInputStream);
Sheet sheet = excelWorkBook.getSheet(0);
int m = sheet.getRows();
int n = sheet.getColumns();
for (int i = 1; i
function AllAreaExcel() {
var title;
title=document.getElementsByTagName(“table”).childNodes.item(0).childNodes(0).childNodes(0).innerText;
alert(title);
var oXL = new ActiveXObject(“Excel.Application”);
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
//从excel的第5行开始插入
oSheet.Range(“A5”).select;
oWB .Worksheets(1).Activate;
oSheet.Cells(3,1).Value=title; //在第3行插入报表头
oWB.Worksheets(1).Range(“A3:I3”).merge(); // 合并单元格区域 A3:I3
oWB.Worksheets(1).Range(“亩掘A3:I3”).HorizontalAlignment=3; //旁或居中对齐A3:I3
var sel=document.body.createTextRange();
sel.moveToElementText(table1); //table 的ID值
sel.select();
sel.execCommand(“Copy”);
oSheet.Paste();
oXL.Visible = true;
Java怎样将数据库中数据导出为Excel文件,求完整例子附带数据库。
用POI啊!
感觉挺好使的,刚刚做完一个账目表导出。
下面是我写的一个运用jxl生成Excel文件的方法
该方法接收一个保存MarkesData数据的ArrayList arlist和文件生成路径Path
通过取得arlist里的数据生成Excel文件
感觉应尺知该是你想要的 我没调试过也许有错 你也可以根据你的需要进握穗行修改^_^
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class WriteExcel {
WritableWorkbook book=null;
public void OutputExcel(ArrayList arlist,String Path){
try{
book = Workbook.createWorkbook(new File(Path));
//设置表名
WritableSheet sheet = book.createSheet(“考试单”,0);
//生成表格题头
Label labe1 = new Label(0, 0, “考生姓名” );
Label labe2 = new Label(1, 0, “地区”);
Label labe3 = new Label(2, 0, “所属院校”);
Label labe4 = new Label(3, 0, “班级”);
Label labe5 = new Label(4, 0, “考试号”);
Label labe6 = new Label(5, 0, “考试时间”);
Label labe7 = new Label(6, 0, “科目名称”);
//将生成的段困卜单元格添加到工作表中
sheet.addCell(labe1);
sheet.addCell(labe2);
sheet.addCell(labe3);
sheet.addCell(labe4);
sheet.addCell(labe5);
sheet.addCell(labe6);
sheet.addCell(labe7);
Iterator it = arlist.iterator();
int i = 1;
while(it.hasNext()){
//通过迭代获得arlist里的MarkesData对象
MarkesData temp = (MarkesData)it.next();
//取得数据生成单元格
Label label1=new Label(0,i,temp.getUser_name());
Label label2=new Label(1,i,temp.getArea_name());
Label label3=new Label(2,i,temp.getCollege_name());
Label label4=new Label(3,i,temp.getClass_name());
Label label5=new Label(4,i,temp.getTest_name());
Label label6=new Label(5,i,temp.getStarttime());
Label label7=new Label(6,i,temp.getSubject_name());
//将生成的单元格添加到工作表中
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
sheet.addCell(label6);
sheet.addCell(label7);
i++;
}
book.write();
book.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try{
if(book!=null)book.close();
}catch(Exception e){
System.out.println(“exception when closing Connection in finally”);
System.out.println(e.getMessage().toString());
}
}
}
}
java导出数据库数据为excel的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java导出数据库数据为excel,用Java轻松实现数据库数据导出为Excel表格,java导出excel,如何从java输出到excel,Java怎样将数据库中数据导出为Excel文件,求完整例子附带数据库。的信息别忘了在本站进行查找喔。
来源地址:用Java轻松实现数据库数据导出为Excel表格 (java导出数据库数据为excel)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^