乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 用<em>java</em>开发软件时,如何添加一个<em>excel</em

用<em>java</em>开发软件时,如何添加一个<em>excel</em

作者:乔山办公网日期:

返回目录:excel表格制作


主要用poi.jar 包。包含两个jar就可以了:poi-3.16.jar、poi-ooxml-3.16.jar

主要方法分三步:

/**
* filePath 文件路径
* unCaseRow  要排除的行数(从上往下)
* unCaseLine  要排除的列数(从左往右)
*/
public List<String[]> readExcel(String filePath, int unCaseRow, int unCaseLine) throws Exception {
   Sheet sheet = null;
    FileInputStream inStream = null;
try {
inStream = new FileInputStream(new File(filePath));
Workbook workBook = WorkbookFactory.create(inStream);

sheet = workBook.getSheetAt(0);
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
} finally {
try {
if (inStream != null) {
inStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

List<String[]> list = init(sheet, unCaseRow, unCaseLine);// 需要排除行数

return list;
}

// 初始化表格中的每一行,并得到每一个单元格的值
private List<String[]> init(Sheet sheet, int unCaseRow, int unCaseLine) {
int rowNum = sheet.getLastRowNum() + 1; // 从零开始
List<String[]> result = new ArrayList<String[]>();
String[] rowArr = null;

Row row = null;
Cell cell = null;
int rowLength = 0;
int rowIndex = 0;
String rowStr = null;
for (int i = unCaseRow; i < rowNum; i++) {
row = sheet.getRow(i);
// 每有新的一行,创建一个新的LinkedList对象
rowLength = row.getLastCellNum();
rowIndex = 0;
rowArr = new String[LINECOUNT];
for (int j = unCaseLine; j < rowLength; j++) {
cell = row.getCell(j);
// 获取单元格的值
rowStr = getCellValue(cell);
// 将得到的值放入链表中
rowArr[rowIndex++] = rowStr;
}

result.add(rowArr);
}

return result;
}

// 获取单元格的值
@SuppressWarnings("deprecation")
private String getCellValue(Cell cell) {
String cellValue = "";
DataFormatter formatter = new DataFormatter();
if (cell != null) {
// 判断单元格数据的类型,不同类型调用不同的方法
switch (cell.getCellType()) {
// 数值类型
case Cell.CELL_TYPE_NUMERIC:
// 进一步判e799bee5baa6e78988e69d83363断 ,单元格格式是日期格式
if (DateUtil.isCellDateFormatted(cell)) {
cellValue = formatter.formatCellValue(cell);
} else {
// 数值
double value = cell.getNumericCellValue();
int intValue = (int) value;
cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);
}
break;
case Cell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
// 判断单元格是公式格式,需要做一种特殊处理来得到相应的值
case Cell.CELL_TYPE_FORMULA: {
try {
cellValue = String.valueOf(cell.getNumericCellValue());
} catch (IllegalStateException e) {
cellValue = String.valueOf(cell.getRichStringCellValue());
}

}
break;
case Cell.CELL_TYPE_BLANK:
cellValue = "";
break;
case Cell.CELL_TYPE_ERROR:
cellValue = "";
break;
default:
cellValue = cell.toString().trim();
break;
}
}
return cellValue.trim();
}

解析成对象以后,不论是插入数据库,还是jsp,都是一样的。

插入数据库:hibernate、mybatis

在jsp显示:对象封装进list,在页面显示list。



HSSFWorkbook wb=new HSSFWorkbook(); //创建一Excel
HSSFSheet sheet=wb.createSheet("sheet1");//创建一个Sheet

HSSFRow row=sheet.createRow(0);//创建一个行

HSSFCell cell=row.createCell((short)0); //创建一个单元格
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("序号"); //设置值

cell=row.createCell((short)1);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("姓");
package myexceltest;
import jxl.*;
import java.io.*;
import jxl.write.*;
/**
 * <p>java读取Excel表格,拷贝、更新Excel工作薄 </p>
 * <p>Description: Java开发人员可以读取Excel文件的内容,更新Excel工作薄,开发人员
 *     也可以用程序生成新的Excel表格,不过我觉得在我们工作中几乎没有这方面需求,我
 *     就不再列出来了,如果有哪位同事需要的话,我再把程序写出来
 * </p>
 * <p>Copyright: Copyright (c) KongZhong Corparation 2005</p>
 * <p>程序开发环境为jb9</p>
 * @author 张丽鹏
 * @version 1.0
 */
public class Test1 {
  public static void main(String[] args) {
    jxl.Workbook rwb = null;
    try{
      //构建Workbook对象, 只读Workbook对象
      //直接从本地文件创建Workbook
      //从输入流创建Workbook
      InputStream is = new FileInputStream("D:/jb9Test/MyExcelTest/Book1.xls");
      rwb = Workbook.getWorkbook(is);
      //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
      //Sheet的下标是从0开始
      //获取第一张Sheet表
       Sheet rs = rwb.getSheet(0);
       //获取Sheet表中所包含的总列数
       int rsColumns = rs.getColumns();
       //获取Sheet表中所包含的总行数
       int rsRows = rs.getRows();
       //获取指定单元格的对象引用
       for(int i=0;i<rsRows;i++){
         for(int j=0;j<rsColumns;j++){
           Cell cell = rs.getCell(j,i);
           System.out.print(cell.getContents()+" ");
         }
         System.out.println();
       }
       //利用已经创建的Excel工作薄创建新的可写入的e69da5e6ba907a686964616f363Excel工作薄
       jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D:/jb9Test/MyExcelTest/Book2.xls"),rwb);
       //读取第一张工作表
       jxl.write.WritableSheet ws = wwb.getSheet(0);
       //获得第一个单元格对象
       jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
       //判断单元格的类型, 做出相应的转化
       if (wc.getType() == CellType.LABEL) {
         Label l = (Label) wc;
         l.setString("The value has been modified.");
       }
       //写入Excel对象
       wwb.write();
       wwb.close();
    }catch(Exception e){
      e.printStackTrace();
    }
    finally{
      //操作完成时,关闭对象,释放占用的内存空间
      rwb.close();
    }
  }
}


package com.excel;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.swing.JTextArea;

import org.apache.poi.hssf.usermodel.HSSFCell;

相关阅读

  • -excel2003 java,java处理excel

  • 乔山办公网excel表格制作
  • Windows下的程序可以通过COM对Excel进行操作。而JDK提供的API都不能够对Excel进行操作,必须使用本地语言(C,Delphi)创建一个zdCOM连接库,放到JDK目录下的lib目录下,再使用Java编写的类文
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网