「java链接excel」java链接服务器

博主:adminadmin 2023-01-09 12:24:11 718

本篇文章给大家谈谈java链接excel,以及java链接服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何在java中做excel表

很简单,这有代码:代码里面数据库访问对象自己写,用到第三方架包:

poi-2.5-final-20040302.jar;

poi-contrib-2.5-final-20040302.jar

poi-scratchpad-2.5-final-20040302.jar

自己去网上下吧

//处理类

public class CountExcel {

/**

* 数据库操作类,自己写吧。。。

*/

private OperData jdbc /*自己写*/;

/**

* 创建excel,返回excel的存放地址

*

* @param title

* 标题

* @param sql

* 查询语句

* @param path

* excel的存放路径(物理地址)

* @param titlename

* 报表的名字

* @return 路径

*/

public String createExcelForAssess(String[] title, String sql, String path,

String titlename) throws Exception {

GregorianCalendar c = new GregorianCalendar();

StringBuffer excelUrl = new StringBuffer();

java.util.Date now = c.getTime();

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm");

String strNow = format.format(now);

excelUrl.append(path).append(File.separator).append("te_").append(

strNow).append(".xls");

// excel的表头

Vector vcCol = new Vector();

if (title == null || title.length 1)

return "";

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

vcCol.add(title[i]);

}

int[] align = new int[vcCol.size()];

int[] num = new int[vcCol.size()];

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

align[i] = 2;

num[i] = 0;

}

Vector vc = getqueryrest(sql);

ExcelReport excel = new ExcelReport();

excel.setExcelFile(excelUrl.toString());

excel.setCols(vcCol.size());

excel.createCaption(titlename);

excel.createColumnCaption(vcCol);

excel.createBody(vc, align, num);

excel.createPage(5);

excel.createFile();

return excelUrl.toString();

}

/**

* 查询结果集

*

* @param sql传入查询的sql语句

* @return Vector

* @throws SQLException

*/

public Vector getqueryrest(String sql) throws SQLException {

Vector vc = new Vector();

//数据库查询,返回的list里面存的是数据的pojo对象

//List list = jdbc.getQueryResult(sql);

if (list != null list.size() 0) {

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

String[] info = (String[]) list.get(i);

for (int j = 0; j info.length; j++) {

vc.add(info[j]);

}

}

}

return vc;

}

}

//工具类

public class ExcelReport{

/**

* EXCEL文件工作区

*/

private HSSFWorkbook wb;

/**

* EXCEL文件SHEET

*/

private HSSFSheet sheet;

/**

* EXCEL文件存放的目录路径

*/

private String excelFile = "";

/**

* 记录当前行数

*/

private int rownum = 0;

/**

* 记录总共列数

*/

private int cols = 0;

/**

* 记录每列的宽度

*/

private int[] length;

/**

* 记录是否已经设定字段数

*/

private boolean flag = false;

/**

* 设置EXCEL文件存放的目录路径,在生成标题,列头前设定

*/

public void setExcelFile(String excelFile){

this.excelFile = excelFile;

}

/**

* 设置EXCEL表的列数,在生成标题,列头前设定

*/

public void setCols(int cols){

this.cols = cols;

if(flag){

if(length.length cols){

length = getLength(length);

}

}else{

length = new int[cols];

}

flag = true;

}

/**

* 第二次设定字段数,保存第一张表格每列的长度

*/

private int[] getLength(int[] arr){

int[] temp = new int[cols];

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

temp[i] = arr[i];

}

return temp;

}

/**

* 初始化EXCEL报表类

*/

public ExcelReport(){

wb = new HSSFWorkbook();

sheet = wb.createSheet("new sheet");

}

/**

* 生成标题

* @param caption 标题头

*/

public void createCaption(String caption){

//生成标题行

HSSFRow row = sheet.createRow((short)rownum);

//生成标题单元格

HSSFCell cell = row.createCell((short)0);

//生成标题单元格样式

HSSFCellStyle style = wb.createCellStyle();

//设定标题字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short)14);

font.setFontName("新宋体");

font.setColor(HSSFColor.BLACK.index);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

style.setFont(font);

//设定标题框格式

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.setAlignment(HSSFCellStyle.ALIGN_CENTER);

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//设置cell编码解决中文高位字节截断

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

//设定单元格文字合样式

cell.setCellValue(caption);

cell.setCellStyle(style);

for(int i=1;icols;i++){

cell = row.createCell((short)i);

cell.setCellStyle(style);

cell.setCellValue("");

}

//设定合并的单元格

sheet.addMergedRegion(new Region(rownum,(short)0,rownum,(short)(cols-1)));

//当前行自增

rownum++;

}

/**

* 生成列头

* @param vc 列头内容

*/

public void createColumnCaption(Vector vc){

//生成列头行

HSSFRow row = sheet.createRow((short)rownum);

//生成了列头格式

HSSFCellStyle style = wb.createCellStyle();

//设定列头字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short)10);

font.setFontName("新宋体");

font.setColor(HSSFColor.BLACK.index);

style.setFont(font);

//设定标题框格式

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.setAlignment(HSSFCellStyle.ALIGN_CENTER);

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//生成列头单元格

HSSFCell cell;

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

//生成标题单元格

cell = row.createCell((short)i);

//设置cell编码解决中文高位字节截断

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

//设定单元格文字合样式

if(vc.get(i) != null){

cell.setCellValue(vc.get(i).toString());

//记录列头的长度

if(vc.get(i).toString().getBytes().length length[i]){

length[i] = vc.get(i).toString().getBytes().length;

}

}else{

cell.setCellValue("");

}

cell.setCellStyle(style);

}

rownum++;

}

/**

* 生成合并的列头

* @param vc 列头

* @param colnum 每列要合并的列数,并且所有要合并的列数之和等于总表格列数

*/

public void mergeColumnCaption(Vector vc,int[] colnum){

//生成标题行

HSSFRow row = sheet.createRow((short)rownum);

//生成标题单元格样式

HSSFCellStyle style = wb.createCellStyle();

//设定标题字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short)10);

font.setFontName("新宋体");

font.setColor(HSSFColor.BLACK.index);

style.setFont(font);

//设定标题框格式

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.setAlignment(HSSFCellStyle.ALIGN_CENTER);

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

int pos = 0;

HSSFCell cell;

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

pos = pos + colnum[i];

cell = row.createCell((short)(pos-colnum[i]));

//设置cell编码解决中文高位字节截断

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

//设定单元格文字合样式

cell.setCellStyle(style);

if(vc.get(i) == null){

cell.setCellValue("");

}else{

cell.setCellValue(vc.get(i).toString());

}

for(int j=1;jcolnum[i];j++){

cell = row.createCell((short)(pos-colnum[i]+j));

cell.setCellStyle(style);

cell.setCellValue("");

}

//设定合并的单元格

sheet.addMergedRegion(new Region(rownum,(short)(pos-colnum[i]),rownum,(short)(pos-1)));

}

//当前行自增

rownum++;

}

/**

* 合并行

* @param startrow 起始行

* @param endrow 终止行

* @param column 列数

*/

public void mergeRowCaption(int startrow,int endrow,int column){

sheet.addMergedRegion(new Region(startrow,(short)column,endrow,(short)column));

}

/**

* 生成表格主体

* @param vc 表格内容

* @param align 每列的对齐方式,1为左,2为中,3为右,数组长度要等于表格列数

* @param num 每列的数据类型,0为字符串,1为数字

*/

public void createBody(Vector vc,int[] align,int[] num){

int rows = vc.size() / cols;

//设定表格字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short)10);

font.setFontName("新宋体");

font.setColor(HSSFColor.BLACK.index);

font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);

HSSFRow row;

HSSFCell cell;

//设定数据格式

HSSFDataFormat df = wb.createDataFormat();

//生成了左对齐表格格式

HSSFCellStyle styleLeft = wb.createCellStyle();

styleLeft.setFont(font);

styleLeft.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleLeft.setBottomBorderColor(HSSFColor.BLACK.index);

styleLeft.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleLeft.setLeftBorderColor(HSSFColor.BLACK.index);

styleLeft.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleLeft.setRightBorderColor(HSSFColor.BLACK.index);

styleLeft.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleLeft.setTopBorderColor(HSSFColor.BLACK.index);

styleLeft.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

styleLeft.setAlignment(HSSFCellStyle.ALIGN_LEFT);

styleLeft.setDataFormat(df.getFormat("##################.00"));

//生成居中对齐表格格式

HSSFCellStyle styleCenter = wb.createCellStyle();

styleCenter.setFont(font);

styleCenter.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleCenter.setBottomBorderColor(HSSFColor.BLACK.index);

styleCenter.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleCenter.setLeftBorderColor(HSSFColor.BLACK.index);

styleCenter.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleCenter.setRightBorderColor(HSSFColor.BLACK.index);

styleCenter.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleCenter.setTopBorderColor(HSSFColor.BLACK.index);

styleCenter.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

styleCenter.setAlignment(HSSFCellStyle.ALIGN_CENTER);

styleCenter.setDataFormat(df.getFormat("##################.00"));

//生成右对齐表格格式

HSSFCellStyle styleRight = wb.createCellStyle();

styleRight.setFont(font);

styleRight.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleRight.setBottomBorderColor(HSSFColor.BLACK.index);

styleRight.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleRight.setLeftBorderColor(HSSFColor.BLACK.index);

styleRight.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleRight.setRightBorderColor(HSSFColor.BLACK.index);

styleRight.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleRight.setTopBorderColor(HSSFColor.BLACK.index);

styleRight.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

styleRight.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

styleRight.setDataFormat(df.getFormat("##################.00"));

for (int i = 0;i rows; i++){

// 创建新行

row = sheet.createRow((short)(rownum));

for (int j = 0;j cols; j++){

// 创建一个单元格

cell = row.createCell((short)j);

//设置cell编码解决中文高位字节截断

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

//设置cell字符类型的值

if(vc.get(i*cols+j) == null){

cell.setCellValue("");

}else{

if(num[j] == 0){

cell.setCellValue(vc.get(i*cols+j).toString());

}else{

cell.setCellValue(Double.parseDouble(vc.get(i*cols+j).toString()));

}

//记录每列的长度

if(vc.get(i*cols+j).toString().getBytes().length length[j]){

length[j] = vc.get(i*cols+j).toString().getBytes().length;

}

}

//设定对齐方式

if(align[j] == 1){

cell.setCellStyle(styleLeft);

}

if(align[j] == 2){

cell.setCellStyle(styleCenter);

}

if(align[j] == 3){

cell.setCellStyle(styleRight);

}

}

rownum++;

}

}

/**

* 生成统计结果行

* @param stat 统计结果

* @param align 对齐方式,1为左,2为中,3为右

*/

public void createStat(String stat,int align){

//生成统计结果行

HSSFRow row = sheet.createRow((short)rownum);

//生成统计结果格

HSSFCell cell = row.createCell((short)0);

//生成统计结果单元格样式

HSSFCellStyle style = wb.createCellStyle();

//设定统计结果字体

HSSFFont font = wb.createFont();

font.setFontHeightInPoints((short)10);

font.setFontName("新宋体");

font.setColor(HSSFColor.BLACK.index);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

style.setFont(font);

//设定标题框格式

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);

//设定对齐方式

if(align == 1){

style.setAlignment(HSSFCellStyle.ALIGN_LEFT);

}

if(align == 2){

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

}

if(align == 3){

style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

}

//设置cell编码解决中文高位字节截断

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

//设定单元格文字合样式

cell.setCellValue(stat);

cell.setCellStyle(style);

for(int i=1;icols;i++){

cell = row.createCell((short)i);

cell.setCellStyle(style);

cell.setCellValue("");

}

//设定合并的单元格

sheet.addMergedRegion(new Region(rownum,(short)0,rownum,(short)(cols-1)));

//当前行自增

rownum++;

}

/**

* 设置页眉

* @param header 页眉内容

* @param align 对齐方式,1为左,2为中,3为右

*/

public void createHeader(String header,int align){

HSSFHeader head = sheet.getHeader();

if(align == 1){

head.setLeft(header);

}

if(align == 2){

head.setCenter(header);

}

if(align == 3){

head.setRight(header);

}

}

/**

* 设置页脚

* @param footer 页脚内容

* @param align 对齐方式,1为左,2为中,3为右

*/

public void createFooter(String footer,int align){

HSSFFooter foot = sheet.getFooter();

if(align == 1){

foot.setLeft(footer);

}

if(align == 2){

foot.setCenter(footer);

}

if(align == 3){

foot.setRight(footer);

}

}

/**

* 设定页脚的页面值

* @param align 对齐方式,1为左,2为中,3为右

*/

public void createPage(int align){

HSSFFooter foot = sheet.getFooter();

if(align == 1){

foot.setLeft("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages());

}

if(align == 2){

foot.setCenter("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages());

}

if(align == 3){

foot.setRight("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages());

}

}

/**

* 生成EXCEL文件

*/

public void createFile() throws Exception{

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

sheet.setColumnWidth((short)i,(short)(length[i]*2*200));

}

FileOutputStream fileOut = new FileOutputStream(excelFile);

wb.write(fileOut);

fileOut.close();

}

}

java如何获取excel表格中的单元格上图片的链接

选择单元格,插入超链接。

注意表格和文件图片最好在同一个文件夹

拷贝的时候直接拷贝文件夹,这要不容易造成链接丢失或者失效。

建议将图片插入到excel的一个工作表中,直接在表里面进行连接,该工作表可以设置为隐藏。

java学生信息管理系统 怎么把连接数据库的改为连接Excel

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection con = DriverManager.getConnection("jdbc:odbc:testExcel","","");

Statement sta = con.createStatement();

ResultSet rs = sta.executeQuery("select * from [sheet1$]");

JAVA连EXCEL

一楼说的对,用jxl

这个是最简单的例子了。

代码示范是:

//emp表

package JavaMakeExcel;

public class Emp {

private int empno;

private String ename;

private String job;

private double sal;

private int mgr;

private String hiredate;

private double comm;

private int deptno;

public Emp() {

super();

}

public Emp(int empno, String ename, String job, double sal, int mgr,

String hiredate, double comm, int deptno) {

super();

this.empno = empno;

this.ename = ename;

this.job = job;

this.sal = sal;

this.mgr = mgr;

this.hiredate = hiredate;

this.comm = comm;

this.deptno = deptno;

}

public int getEmpno() {

return empno;

}

public void setEmpno(int empno) {

this.empno = empno;

}

public String getEname() {

return ename;

}

public void setEname(String ename) {

this.ename = ename;

}

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

public double getSal() {

return sal;

}

public void setSal(double sal) {

this.sal = sal;

}

public int getMgr() {

return mgr;

}

public void setMgr(int mgr) {

this.mgr = mgr;

}

public String getHiredate() {

return hiredate;

}

public void setHiredate(String hiredate) {

this.hiredate = hiredate;

}

public double getComm() {

return comm;

}

public void setComm(double comm) {

this.comm = comm;

}

public int getDeptno() {

return deptno;

}

public void setDeptno(int deptno) {

this.deptno = deptno;

}

public String toString() {

return this.getEmpno() + ", " + this.getEname() + ", "

+ this.getHiredate() + ", " + this.getJob() + ", "

+ this.getMgr() + ", " + this.getSal() + ", " + this.getComm()

+ ", " + this.getDeptno();

}

}

//java2exl

package JavaMakeExcel;

/**

目的:提供由数据对象集合类(Vector)生成Excel工作表的功能

作者:ning lijuan

时间:2003.5.25

最后修改时间:

*/

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.lang.reflect.Method;

import java.util.Vector;

import jxl.Workbook;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

public class Java2Excel {

// ===============================================================//

// *******************************构造函数************************//

// ===============================================================//

/**

* 目的 :缺省的构造函数 参数 :无 返回值:无

*/

public Java2Excel() {

}

// ===============================================================//

// *********************对象属性**********************//

// ===============================================================//

/**

* 目的 :targetfile属性的设置 参数 :targetfile 返回值:无

*/

public void setTargetfile(String targetfile) {

this.targetfile = targetfile;

}

/**

* 目的 :worksheet属性的设置 参数 :worksheet 返回值:无

*/

public void setWorksheet(String worksheet) {

this.worksheet = worksheet;

}

/**

* 目的 :title属性的设置 参数 :title[] 返回值:无

*/

public void setTitle(String[] title) {

this.title = title;

}

/**

* 目的 :集合类对象的设置 参数 :集合类对象 返回值:无

*/

public void setOuterV(Vector outerV) {

this.outerV = outerV;

}

/**

* 目的 :name属性的设置 参数 :name 返回值:无

*/

public void setName(String strName) {

this.strName = strName;

}

// ===============================================================//

// ***********************内部使用方法******************************//

// ===============================================================//

/**

* 目的 :生成工作表 参数 :无 返回值:无

*/

public void java2Excel() {

if (outerV == null) {

isSuccess = false;

return;

}

WritableWorkbook workbook;

try {

// 下面两种method都可以生成excel工作簿

// Method1:创建可写入的Excel工作薄,运行生成的文件output.xls在当前文件夹下

// workbook = Workbook.createWorkbook(new File("output.xls"));

// Method2:将WritableWorkbook直接写入到输出流,需要正确设置http头才能调用客户本地的excel打开刚刚生成的这个工作表(尚未通过,这个方法也只是在本地生成了一个xls文件)

if (targetfile == null)

// 如果不设置targetfile,可以设在一个公共目录下比如路径:xls\\default.xls,在xls目录下生成excel表

targetfile = "xls\\default.xls";

OutputStream os = new FileOutputStream(targetfile);

workbook = Workbook.createWorkbook(os);

WritableSheet sheet = workbook.createSheet(worksheet, 0); // 添加工作表

// 设置格式,使内容带边框以便于打印

jxl.write.WritableCellFormat format = new WritableCellFormat();// 用于title

jxl.write.WritableCellFormat format0 = new WritableCellFormat();// 用于正文

format.setBackground(jxl.format.Colour.GRAY_25);

format.setBorder(jxl.format.Border.ALL,

jxl.format.BorderLineStyle.THIN);

format.setAlignment(jxl.format.Alignment.CENTRE);

format0.setBackground(jxl.format.Colour.WHITE);

format0.setBorder(jxl.format.Border.ALL,

jxl.format.BorderLineStyle.THIN);

format0.setAlignment(jxl.format.Alignment.CENTRE);

// sheet.setColumnView(0,8);//Sets the width of the column on this

// sheet, in characters.

jxl.write.Label label = null;

WritableFont arial12pt = new WritableFont(WritableFont.ARIAL, 12);

WritableCellFormat arial12format = new WritableCellFormat(arial12pt);

arial12format.setWrap(true);

// 合并单元格: mergeCells(int col1,int row1,int col2,int row2):左上角到右下角

try {

sheet.mergeCells(title.length / 2 - 1, 0, title.length / 2 + 1,

0);

} catch (WriteException we) {

we.printStackTrace();

}

label = new jxl.write.Label(title.length / 2 - 1, 0, strName,

arial12format);

sheet.addCell(label);

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

label = new jxl.write.Label(i, 2, title[i], format); // 将title添加在工作表的第一行

sheet.addCell(label);

}

Object obj = null; // outerV中的元素

String attrib = ""; // 单一对象属性值,如job值为CLERK;

jxl.write.Label content = null;

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

obj = outerV.get(i);

//对象类型未知,对象的属性可以为private,通过getXXX方法获取属性值。

Class clazz = obj.getClass(); //获取对象类

Method[] methods = clazz.getDeclaredMethods();//获取该对象的所有方法,返回方法数组

int count = 0;

//遍历方法数组

for (int j = 0; j methods.length; j++) {

Method m = methods[j];

String methodName = m.getName();

//只处理getXXX方法

if (methodName.startsWith("get")) {

//调用该方法,invoke方法参数一obj表示对象实例,参数二为该方法的实参,getXXX方法没有参数,故为null,returnValue为getXXX方法的返回值

Object returnValue = m.invoke(obj, null);

attrib = (returnValue == null) ? "" : returnValue.toString();

content = new jxl.write.Label(count, i + 3, attrib, format0); //count用来表示计数位置,第几列

// 添加元素

sheet.addCell(content);

count++;

}

}

// //对象类型未知,使用通用方式获取属性值,前提是对象的属性必须均为非私有,否则只能获取属性名称,无法获取属性值。

// Class cls = obj.getClass();

// java.lang.reflect.Field[] flds = cls.getDeclaredFields();

// if (flds != null) {

// for (int j = 0; j flds.length; j++) {

// // System.out.println(flds[j].getName() + " - "

// // + flds[j].get(obj));

// Object value = flds[j].get(obj);

// if (value != null)

// attrib = value.toString();

// content = new jxl.write.Label(j, i + 3, attrib, format0); //

// // 添加元素

// sheet.addCell(content);

// }

// }

}

workbook.write();

workbook.close();

isSuccess = true;

} catch (Exception e) {

e.printStackTrace();

isSuccess = false;

}

}

// ===============================================================//

// *************************内部使用变量**************************//

// ===============================================================//

private String targetfile; // 输出的excel文件名

private String worksheet; // 输出的excel文件工作表名

private String strName; // 输出的报表名称

private String[] title; // excel工作表的标题

private Vector outerV; // 对象集合类,其内容显示在excel表中

public boolean isSuccess = false;// 转换是否成功

}

//Test

package JavaMakeExcel;

import java.lang.reflect.Method;

import java.sql.*;

import java.util.*;

public class TestJava2Excel {

String serverName = "localhost";

String driver = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@" + serverName + ":1521:orcl";

Connection connect = null;

Statement stmt = null;

ResultSet rs = null;

public TestJava2Excel() {

try {

Class.forName(driver);

connect = DriverManager.getConnection(url, "scott", "tiger");

stmt = connect.createStatement();

} catch (Exception e) {

e.printStackTrace();

}

}

public ResultSet query(String sql) {

try {

rs = stmt.executeQuery(sql);

} catch (Exception e) {

e.printStackTrace();

}

return rs;

}

public static void main(String[] args) {

Vector outV = new Vector();

Emp emp = null;

TestJava2Excel ob = new TestJava2Excel();

try {

// 取得结果集

ResultSet rs = ob.query("select empno, ename, job, mgr, to_char(hiredate, 'yyyy-mm-dd') hiredate, sal, comm, deptno from emp");

while (rs.next()) {

emp = new Emp();

emp.setEmpno(rs.getInt("empno"));

emp.setEname(rs.getString("ename"));

emp.setJob(rs.getString("job"));

emp.setHiredate(rs.getString("hiredate"));

emp.setMgr(rs.getInt("mgr"));

emp.setSal(rs.getDouble("sal"));

emp.setComm(rs.getDouble("comm"));

emp.setDeptno(rs.getInt("deptno"));

/*

* //测试通用方式调用对象的set方法设置对象属性 Object obj = new Emp(); Class clazz

* = obj.getClass(); // 获取对象类

*

* Method[] methods = clazz.getDeclaredMethods();//

* 获取该对象的所有方法,返回方法数组 for (int j = 0; j methods.length; j++) {

* Method m = methods[j]; String methodName = m.getName(); if

* (methodName.startsWith("set")) { String propertyName =

* methodName.substring(3, 4) .toLowerCase() +

* methodName.substring(4, methodName.length());

*

* Object recordValue = rs.getObject(propertyName);

*

* if (recordValue == null) recordValue = "";

*

* m = clazz.getMethod(m.getName(), new Class[] {

* recordValue.getClass() });

*

* m.invoke(obj, new Object[] { recordValue }); }

*

* }

*/

outV.add(emp);

}

} catch (Exception e) {

e.printStackTrace();

}

// 显示暂存于Vector的对象集

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

emp = (Emp) outV.get(i);

System.out.println(emp);

System.out.println();

}

// 设置要输出的excel文件的属性

String targetfile = "F:\\out.xls";// 输出的excel文件名

String worksheet = "Emp List";// 输出的excel文件工作表名

String name = "the Emp List";

String[] title = { "empno", "ename", "job", "salary", "mgr",

"hiredate", "comm", "deptno" };// excel工作表的标题

// 输出

Java2Excel je = new Java2Excel();

je.setTargetfile(targetfile);

je.setWorksheet(worksheet);

je.setName(name);

je.setTitle(title);

je.setOuterV(outV);

je.java2Excel();

if (je.isSuccess)

System.out.println("OK");

}

}

如何用java导入excel数据到数据库

public static void main(String args[]) throws BiffException, IOException, WriteException{

//1 从Excel文件读取数据表

//Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。

//读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:

//(完整代码见ExcelReading.java)

try

{

//构建Workbook对象, 只读Workbook对象

//直接从本地文件创建Workbook

//从输入流创建Workbook

InputStream is = new FileInputStream("D:/user.xls");

jxl.Workbook rwb = Workbook.getWorkbook(is);

//一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段:

//获取第一张Sheet表

Sheet rs = (Sheet) rwb.getSheet(0);

//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,

//要注意的一点是下标从0开始,就像数组一样。

//一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:

//获取第一行,第一列的值

Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);

String strc00 = c00.getContents();

//获取第一行,第二列的值

Cell c10 = ((jxl.Sheet) rs).getCell(1, 0);

String strc10 = c10.getContents();

//获取第二行,第二列的值

Cell c11 = ((jxl.Sheet) rs).getCell(1, 1);

String strc11 = c11.getContents();

System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());

System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());

System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());

//如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,

//它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,

//Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

//如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:

String strcc00 = null;

double strcc10 = 0.00;

Date strcc11 = null;

Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0);

Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0);

Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1);

if(c00.getType() == CellType.LABEL)

{

LabelCell labelc00 = (LabelCell)cc00;

strcc00 = labelc00.getString();

}

if(c10.getType() == CellType.NUMBER)

{

NumberCell numc10 = (NumberCell)cc10;

strcc10 = numc10.getValue();

}

if(c11.getType() == CellType.DATE)

{

DateCell datec11 = (DateCell)cc11;

strcc11 = datec11.getDate();

}

System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType());

System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType());

System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType());

//在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,

//强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。

//API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:

//每种类型的具体意义,请参见Java Excel API Document。

//当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,

//以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段:

//操作完成时,关闭对象,释放占用的内存空间

rwb.close();

}

catch (Exception e)

{

e.printStackTrace();

}

//Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,

//其它的方法请参考附录中的Java Excel API Document。

//Workbook类提供的方法

//1. int getNumberOfSheets();

//获得工作薄(Workbook)中工作表(Sheet)的个数,示例:

jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

int sheets = rwb.getNumberOfSheets();

//2. Sheet[] getSheets();

//返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:

jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();

//3. String getVersion();

//返回正在使用的API的版本号,好像是没什么太大的作用。

jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

String apiVersion = rwb3.getVersion();

//Sheet接口提供的方法

//1) String getName();

//获取Sheet的名称,示例:

jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs = rwb4.getSheet(0);

String sheetName = rs.getName();

//2) int getColumns()

//获取Sheet表中所包含的总列数,示例:

jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs2 = rwb5.getSheet(0);

int rsColumns = rs2.getColumns();

//3) Cell[] getColumn(int column)

//获取某一列的所有单元格,返回的是单元格对象数组,示例:

jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs3 = rwb6.getSheet(0);

Cell[] cell = rs3.getColumn(0);

//4) int getRows()

//获取Sheet表中所包含的总行数,示例:

jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs4 = rwb7.getSheet(0);

int rsRows = rs4.getRows();

//5) Cell[] getRow(int row)

//获取某一行的所有单元格,返回的是单元格对象数组,示例子:

jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs5 = rwb8.getSheet(0);

Cell[] cell5 = rs5.getRow(0);

//6) Cell getCell(int column, int row)

//获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,

//这与通常的行、列组合有些不同。

jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));

jxl.Sheet rs6 = rwb9.getSheet(0);

Cell cell6 = rs6.getCell(0, 0);

java打开excel

在JSP页面中输入如下语句就可以了 :%

//设置文件格式和文件名

response.setContentType("Application/msexcel;charset=GBK");

response.setHeader("Content-disposition", "attachment; filename=Allocate Supply by National MAR or Region.xls");

%

关于java链接excel和java链接服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。