「java链接excel」java链接服务器
本篇文章给大家谈谈java链接excel,以及java链接服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何在java中做excel表
- 2、java如何获取excel表格中的单元格上图片的链接
- 3、java学生信息管理系统 怎么把连接数据库的改为连接Excel
- 4、JAVA连EXCEL
- 5、如何用java导入excel数据到数据库
- 6、java打开excel
如何在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链接服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。