需要对Excel的大数据量进行处理时,如将某个excel表格中的数据导入的DB的某个表中,可将用java程序将数据读出,然后做相应的判断处理。
在对Excel大数据量进行处理时,可以用java程序将数据读出,然后用程序进行相应处理,会比较灵活方便。例如:需要将某个excel表格中的数据导入到数据库,就可先读入内存,再插入数据库,或拼合成sql语句,在数据库管理器中执行。
java操作EXCEL表,需要用到jxl.jar包。可从附件中下载。
读取示例:
package com.ljf.mb;
import java.io.FileInputStream;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ReadExcel
{
public static void main(String[] args) throws Exception
{
{
String filePath = "d:/.xls"; //文件在电脑中的位置
InputStream is = new FileInputStream(filePath);
Workbook rwb = Workbook.getWorkbook(is);
Sheet rs = rwb.getSheet(0);// 获取第一张Sheet表
int hangNum = rs.getRows();//得到总行数
for (int i = 1; i < hangNum; i++)
{
String name = getCallStr(rs, i, 5).trim(); //得到第i行,第5列数据,行列均是从0开始
String gg = getCallStr(rs, i, 6).trim();
System.out.println(name + " " + gg); //组织自己想要的输出
}
}
}
/**
* 功能描述:得到工作表中某个单元格的数据
*</br>日期:2013-3-29
*</br>@author : 劲风
*</br>@param rs 工作表对象
*</br>@param hang 行数,从0开始
*</br>@param lie 列数,从0开始
*</br>@return 单元格的内容
*/
public static String getCallStr(Sheet rs, int hang, int lie)
{
Cell cell = rs.getCell(lie, hang);
String value = cell.getContents();
if (value != null)
{
return value.trim();
}
return "";
}
}
附增写入Excel的例子:
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class WriteExcel
{
public static void main(String[] args) throws Exception
{
WritableWorkbook wwb = null;
WritableSheet ws = null;
try
{
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File("d:/tables/one.xls"));
if(wwb!=null)
{
//创建一个可写入的工作表
ws = wwb.createSheet("sheet1", 0); //第一个是工作表的名称,第二个是工作表在工作薄中的位置
//下面开始添加单元格
Label lab00 = creatLabel(0, 0, "姓名"); //行,列,内容
Label lab01 = creatLabel(0, 1, "年龄"); //行,列,内容
Label lab10 = creatLabel(1, 0, "张三"); //行,列,内容
Label lab11 = creatLabel(1, 1, "20"); //行,列,内容
ws.addCell(lab00);
ws.addCell(lab01);
ws.addCell(lab10);
ws.addCell(lab11);
wwb.write(); //从内存中写入文件中
wwb.close(); //关闭资源,释放内存
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static Label creatLabel(int hang,int lie,String con) //行,列,内容
{
return new Label(lie, hang, con);
}
}