呵呵,我给你一个吧,昨天刚做了的, 这个保证能过,都是比较简单的,你看看 不过按照自己的需求要自己修改一下, 你看一下吧, 有两个,一个是网上的,能用的,一个是自己的,也是能用的,格式你可以在前台设置为xls格式的传入. 说明:这个是用struts2 + spring的,其实框架跟这个操作没有关系,都可以完成,public String toImportMsisdnAreacfg(){ return "toImport"; } public String importMsisdnAreacfg(){ //startTime and endTime use to test long startTime = System.currentTimeMillis();
jxl是读取单元格的,你插入一个图片,图片的位置不在某单元格里啊,你读不到内容
我是这么理解的,高手指教啊
这个保证能过,都是比较简单的,你看看
不过按照自己的需求要自己修改一下,
你看一下吧,
有两个,一个是网上的,能用的,一个是自己的,也是能用的,格式你可以在前台设置为xls格式的传入.
说明:这个是用struts2 + spring的,其实框架跟这个操作没有关系,都可以完成,public String toImportMsisdnAreacfg(){
return "toImport";
}
public String importMsisdnAreacfg(){
//startTime and endTime use to test
long startTime = System.currentTimeMillis();
try{
String targetDirectory = context.getRealPath("/upload");
String targetFileName = uploadFileName;
File target = new File(targetDirectory,targetFileName);
FileUtils.copyFile(upload, target);
workbook = Workbook.getWorkbook(target);
sheet = workbook.getSheet(0);
int rows = sheet.getRows();
String firstNumber = null;
String secondNumber = null;
for(int i = 1;i < rows;i++){
cell = sheet.getRow(i);
for(int j = 0;j < cell.length;j++){
if(j == 0){
firstNumber = cell[j].getContents();
}else{
secondNumber = cell[j].getContents();
}
}
msisdnAreacfgBs.saveMsisdnAreacfg(firstNumber, secondNumber);
}
}catch(Exception e){
//don't do anything;
}finally{
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
return "showList";
}
* @param file 待读取的文件
* @return
*/
public static String readExcel(File file){ StringBuffer sb = new StringBuffer();
int rowNum = 0;
String cellValue = "";
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb = Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++)
{
//得到当前工作表的行数
rowNum = sheet[i].getRows();
for(int j=0;j<rowNum;j++){
Cell[] cells = sheet[i].getRow(j);
if(cells != null && cells.length>0){
for(int k=0;k<cells.length;k++){
cellValue = cells[k].getContents();
sb.append(cellValue + "\t");
}
}
sb.append("\r\n");
}
sb.append("\r\n");
}
}
//最后关闭资源,释放内存
wb.close();
return sb.toString();
}
/**生成一个Excel文件
* @param fileName 要生成的Excel文件名
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
labelC.setString("nihao");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
下面是我的一些代码:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(getInputStream(request));
jxl.Sheet sh = rwb.getSheet(0); // 获取指定sheet,这里设置为第一个sheet,可根据具体情况在今后进行扩展。
jxl.Sheet s2 = rwb.getSheet(1);
jxl.Sheet s3 = rwb.getSheet(2);
int rCount = s3.getRows();// 取总行数。
jxl.Image image = sh.getDrawing(0);
byte[] b = image.getImageData();
通过sheet下面的getDrawing(0)应该是能获取图片数据的,并且byte数组中b中的数据是有的,不过插入到数据库不是图片格式,而且,无法将byte写到前台页面也不是图片
jxl.write.WritableSheet.addImage(WritableImage wi);
设置excel单元格自动宽度,如果哪位大哥有知道怎么解决设置自动宽度,也请告知。
兄弟将不胜感激
File file1 = new File("C:\\1.png");
FileOutputStream fstream = new FileOutputStream(file1);
BufferedOutputStream stream = new BufferedOutputStream(fstream);
stream.write(b);jxl只支持png
WritableWorkbook wwb = Workbook.createWorkbook(xlsFile);
WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
File imageFile = new File("C:\\1.png");
WritableImage wi = new WritableImage(1, 4, 6, 18, imageFile);
ws.addImage(wi);
wwb.write();
wwb.close();imageFile可以从数据库读然后自己组织
已经解决,谢谢大家的回答。