文件管理 · 2022年8月1日

java导入excelxlsx文件|java poi怎么导入excel数据

『壹』 java导入Excel文件,但是不上传到服务器,思路是怎么样的

common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件下面先介绍上传文件到服务器(多文件上传):import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.util.regex.*;import org.apache.commons.fileupload.*;public class upload extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=GB2312"; //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); try { DiskFileUpload fu = new DiskFileUpload(); // 设置允许用户上传文件大小,单位:字节,这里设为2m fu.setSizeMax(2*1024*1024); // 设置最多只允许在内存中存储的数据,单位:字节 fu.setSizeThreshold(4096); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录 fu.setRepositoryPath("c://windows//temp"); //开始读取上传信息 List fileItems = fu.parseRequest(request); // 依次处理每个上传的文件 Iterator iter = fileItems.iterator();//正则匹配,过滤路径取文件名 String regExp=".+////(.+)$";//过滤掉的文件类型String[] errorType={".exe",".com",".cgi",".asp"}; Pattern p = Pattern.compile(regExp); while (iter.hasNext()) { FileItem item = (FileItem)iter.next(); //忽略其他不是文件域的所有表单信息 if (!item.isFormField()) { String name = item.getName(); long size = item.getSize(); if((name==null||name.equals("")) && size==0) continue; Matcher m = p.matcher(name); boolean result = m.find(); if (result){ for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){ if (m.group(1).endsWith(errorType[temp])){ throw new IOException(name+": wrong type"); } } try{//保存上传的文件到指定的目录//在下文中上传文件至数据库时,将对这里改写 item.write(new File("d://" + m.group(1)));out.print(name+" "+size+""); } catch(Exception e){ out.println(e); }} else { throw new IOException("fail to upload"); } } }} catch (IOException e){ out.println(e); } catch (FileUploadException e){ out.println(e); } }}现在介绍上传文件到服务器,下面只写出相关代码:以sql2000为例,表结构如下:字段名:name filecode类型: varchar image数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");代码如下:。。。。。。try{ 这段代码如果不去掉,将一同写入到服务器中 //item.write(new File("d://" + m.group(1))); int byteread=0; //读取输入流,也就是上传的文件内容 InputStream inStream=item.getInputStream(); pstmt.setString(1,m.group(1)); pstmt.setBinaryStream(2,inStream,(int)size); pstmt.executeUpdate(); inStream.close();out.println(name+" "+size+" "); }。。。。。。这样就实现了上传文件至数据库。

『贰』 急!高手进,关于java导入excel的问题!

因为给表格赋值,需要列名和数据两个变量,,你将数据读到内存中后,,将列名那个变量(可能是个数组,也可能是个vector)做下修改。如果是vector就add(“name”)即可,如果是数组,就重新new一个新数组,把原有的列名赋过来,再加新的,,如:String[]colName=newString{"姓名","性别"}修改:String[]newCol=newString[colname.length()+1];for(inti=0;i<colname.length();i++){newCol[i]=colName[i];}newCol[colname.length()]="年龄"将这个新数组newCol给table即可

『叁』 Java 怎么把 excel文件导入到数据库

你好:Java代码 1.<%@page language="java" contentType="text/html; charset=utf-8" %> 2.<%@page import="java.io.File"%> 3.<%@page import="java.io.InputStream"%> 4.<%@page import="java.io.FileInputStream"%> 5.<%@page import="java.util.Vector"%> 6.<%@page import="java.util.Iterator"%> 7.<%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%> 8.<%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%> 9.<%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%> 10.<%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%> 11.<%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%> 12.<%@page import="com.fuyun.hp.common.PubUtil"/> 13.<%@page import="com.fuyun.hp.hibernate.mapping.RadioType"%> 14.<%@page import="com.fuyun.hp.hibernate.mapping.RadioTypeDAO"%> 15.<%@page import="com.fuyun.hp.common.SpringContext"/> 16.<%@page import="org.springframework.orm.hibernate3.HibernateTransactionManager"/> 17.<%@page import="org.springframework.transaction.TransactionDefinition"/> 18.<%@page import="org.springframework.transaction.TransactionStatus"/> 19.<%@page import="org.springframework.transaction.support.DefaultTransactionDefinition"/> 20.<% 21.//出于考虑显示格式,实际运行时,请将代码中的全角空格转换为半角空格 22.//代码中的PubUtil.nvl(Object)方法,当Object为null时返回空串(也就是类似Oracle中的nvl方法) 23.request.setCharacterEncoding("utf-8"); 24.File tempPath = new File(getServletContext().getRealPath("/") 25.+ AdsUtil.TEMP_UPLOAD_PATH); 26.if (!tempPath.exists()) 27.return; 28. 29.String fileName = "radioTree.xls"; 30.fileName = tempPath.toString() + "\\" + fileName; 31.InputStream inp = new FileInputStream(fileName); 32.HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); 33.HSSFSheet sheet = wb.getSheetAt(0); 34.RadioType rt; 35.RadioTypeDAO rtDao = RadioTypeDAO.getInstance(); 36. 37.HibernateTransactionManager tManager = SpringContext.getTransactionManager(); 38.TransactionDefinition td = new DefaultTransactionDefinition(); 39.TransactionStatus ts = tManager.getTransaction(td); 40. 41.for (Iterator<HSSFRow> rit = (Iterator<HSSFRow>)sheet.rowIterator(); rit.hasNext(); ) { 42.HSSFRow row = rit.next(); 43.boolean existFlag = true; 44.for(short index = 0;index < row.getPhysicalNumberOfCells();index ++){ 45.HSSFCell cell = row.getCell(index); 46.if(index == row.getLastCellNum() && cell == null) 47.existFlag = false; 48.else if(index < row.getLastCellNum() && cell == null) 49.continue; 50.else 51.break; 52.} 53.if(existFlag == false){ 54.break; 55.} 56.else{ 57.Vector<String> values = new Vector<String>(); 58.rt = null; 59.try{ 60.if(row.getRowNum() == 0)//从第2行开始读取 61.continue; 62.for (int index = 0; index < 5; index ++) { 63.HSSFCell cell = row.getCell(new Short(index + "")); 64.if(cell == null) 65.values.add(""); 66.else{ 67.if(cell.getCellType() == cell.CELL_TYPE_NUMERIC){ 68.values.add(String.format("%.0f", cell.getNumericCellValue())); 69.} 70.else 71.values.add(PubUtil.nvl(cell.getStringCellValue())); 72.} 73.} 74. 75.if("".equals(PubUtil.nvl(values.get(0)))){ 76.rt = new RadioType(); 77.} 78.else{ 79.rt = rtDao.get(values.get(0)); 80.} 81.rt.setId(values.get(0));//id 82.rt.setParentId(PubUtil.nvl(values.get(1)));//上级id 83.rt.setName(PubUtil.nvl(values.get(2)));//名称 84.rt.setType(PubUtil.nvl(values.get(3)));//类型 85.rt.setOrderIndex(Integer.parseInt(PubUtil.nvl(values.get(4))));//排序 86. 87.if("".equals(PubUtil.nvl(values.get(0)))){ 88.rtDao.save(rt); 89.} 90.else{ 91.rtDao.update(rt); 92.} 93.out.println(rt); 94.} 95.catch(Exception e){ 96.tManager.rollback(ts); 97.e.printStackTrace(); 98.out.print("{success: false, info:'导入失败!'}"); 99.return; 100.} 101.} 102.} 103.tManager.commit(ts); 104.out.print("{success: true}"); 105. %>

『肆』 java中怎么把excel导入数据库

1、加入依赖的jar文件:

引用:*mysql的jar文件*Spring_HOME/lib/poi/*.jar

2、编写数据库链接类

packagecom.zzg.db;importjava.sql.Connection;importjava.sql.DriverManager;publicclassDbUtils{privatestaticConnectionconn;static{try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost/test","root","123456");}catch(Exceptione){e.printStackTrace();}}publicstaticConnectiongetConn(){returnconn;}publicstaticvoidsetConn(Connectionconn){DbUtils.conn=conn;}}

3、编写数据库操作类

packagecom.zzg.db;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;publicclassExcuteData{privatePreparedStatementpstmt;publicbooleanExcuData(Stringsql){Connectionconn=DbUtils.getConn();booleanflag=false;try{pstmt=conn.prepareStatement(sql);flag=pstmt.execute();}catch(SQLExceptione){e.printStackTrace();}returnflag;}}

4、编写Excel表格实体类

packagecom.zzg.model;publicclassTableCell{privateString_name;privateString_value;publicStringget_name(){return_name;}publicvoidset_name(String_name){this._name=_name;}publicStringget_value(){return_value;}publicvoidset_value(String_value){this._value=_value;}}

5、编写主键生成方法

packagecom.zzg.util;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Random;publicclassGenericUtil{(){StringprimaryKey;primaryKey=newSimpleDateFormat("yyyyMMddHHmmss").format(newDate());Randomr=newRandom();primaryKey+=r.nextInt(100000)+100000;returnprimaryKey;}}

6、编写Excel操作类

packagecom.zzg.deployData;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importcom.zzg.db.ExcuteData;importcom.zzg.model.TableCell;importcom.zzg.util.GenericUtil;publicclassOperExcel<TextendsSerializable>{privateHSSFWorkbookworkbook;privateStringtableName;privateClass<T>type;privateStringsheetName;publicOperExcel(FileexcelFile,StringtableName,Class<T>type,StringsheetName)throwsFileNotFoundException,IOException{workbook=newHSSFWorkbook(newFileInputStream(excelFile));this.tableName=tableName;this.type=type;this.sheetName=sheetName;InsertData();}//向表中写入数据publicvoidInsertData(){System.out.println("yyy");ExcuteDataexcuteData=newExcuteData();List<List>datas=getDatasInSheet(this.sheetName);//向表中添加数据之前先删除表中数据StringstrSql="deletefrom"+this.tableName;excuteData.ExcuData(strSql);//拼接sql语句for(inti=1;i<datas.size();i++){strSql="insertinto"+this.tableName+"(";Listrow=datas.get(i);for(shortn=0;n<row.size();n++){TableCellexcel=(TableCell)row.get(n);if(n!=row.size()-1)strSql+=excel.get_name()+",";elsestrSql+=excel.get_name()+")";}strSql+="values(";for(shortn=0;n<row.size();n++){TableCellexcel=(TableCell)row.get(n);try{if(n!=row.size()-1){strSql+=getTypeChangeValue(excel)+",";}elsestrSql+=getTypeChangeValue(excel)+")";}catch(RuntimeExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}}//执行sqlexcuteData.ExcuData(strSql);}}/***获得表中的数据*@paramsheetName表格索引(EXCEL是多表文档,所以需要输入表索引号)*@return由LIST构成的行和表*/publicList<List>getDatasInSheet(StringsheetName){List<List>result=newArrayList<List>();//获得指定的表HSSFSheetsheet=workbook.getSheet(sheetName);//获得数据总行数introwCount=sheet.getLastRowNum();if(rowCount<1){returnresult;}//逐行读取数据for(introwIndex=0;rowIndex<rowCount;rowIndex++){//获得行对象HSSFRowrow=sheet.getRow(rowIndex);if(row!=null){List<TableCell>rowData=newArrayList<TableCell>();//获得本行中单元格的个数intcolumnCount=sheet.getRow(0).getLastCellNum();//获得本行中各单元格中的数据for(shortcolumnIndex=0;columnIndex<columnCount;columnIndex++){HSSFCellcell=row.getCell(columnIndex);//获得指定单元格中数据ObjectcellStr=this.getCellString(cell);TableCellTableCell=newTableCell();TableCell.set_name(getCellString(sheet.getRow(0).getCell(columnIndex)).toString());TableCell.set_value(cellStr==null?"":cellStr.toString());rowData.add(TableCell);}result.add(rowData);}}returnresult;}/***获得单元格中的内容**@paramcell*@returnresult*/protectedObjectgetCellString(HSSFCellcell){Objectresult=null;if(cell!=null){intcellType=cell.getCellType();switch(cellType){caseHSSFCell.CELL_TYPE_STRING:result=cell.getStringCellValue();break;caseHSSFCell.CELL_TYPE_NUMERIC:result=cell.getNumericCellValue();break;caseHSSFCell.CELL_TYPE_FORMULA:result=cell.getNumericCellValue();break;caseHSSFCell.CELL_TYPE_ERROR:result=null;break;caseHSSFCell.CELL_TYPE_BOOLEAN:result=cell.getBooleanCellValue();break;caseHSSFCell.CELL_TYPE_BLANK:result=null;break;}}returnresult;}//根据类型返回相应的值@SuppressWarnings("unchecked")(TableCellexcelElement)throwsRuntimeException,Exception{StringcolName=excelElement.get_name();StringcolValue=excelElement.get_value();StringretValue="";if(colName.equals("id")){retValue="'"+GenericUtil.getPrimaryKey()+"'";returnretValue;}if(colName==null){retValue=null;}if(colName.equals("class_createuser")){retValue="yaa101";return"'"+retValue+"'";}retValue="'"+colValue+"'";returnretValue;}}

7、编写调用操作Excel类的方法

packagecom.zzg.deployData;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.IOException;publicclassDeployData{privateFilefileOut;publicvoidexcute(Stringfilepath){fileOut=newFile(filepath);this.deployUserInfoData();}publicvoiddeployUserInfoData(){try{newOperExcel(fileOut,"test",Object.class,"Sheet1");}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}

8、编写客户端

packagecom.zzg.client;importcom.zzg.deployData.DeployData;publicclassDeployClient{publicstaticvoidmain(String[]args){DeployDatadeployData=newDeployData();deployData.excute("D://test.xls");}}

『伍』 java web 怎么导入excel文件

1.要正确的将Web客户端的Excel文件导入到服务器的数据库中,需要将客户端的Excel文件上传到服务器上。可以使用FileUpload控件完成。2.Excel文件上传到服务器指定的目录中,这里假设是该站点的upfiles目录中。3.使用SQL语句从upfiles目录中的上传Excel文件中读取数据显示或写入数据库。

『陆』 java导入excel文件,内含图片,图片中有超链接,如何获取这个超链接

可以把图片上的超链接写到单元格获取吧,直接在图片上是没有办法获取的,除非使用OCR扫描获取整个图片的文字,然后提取超链接为字符串

『柒』 如何在java程序中导入excel数据

利用数据库连接。首先你要创建数据源,创建数据源就是在控制面板中将你的ecel数据导入到odbc中,然后在用java语句实现连接,从而运行显示数据。如果你还是觉得不明白的话,建议你去看一下数据库那章。

『捌』 如何用java把数据写入到excel

添加Spire.Xls.jar依赖,可以创建Excel,或者对现有Excel文档进行处理。

1.写入数据到指定单元格

//CreateaWorkbookinstanceWorkbookwb=newWorkbook();//GetthefirstworksheetWorksheetsheet=wb.getWorksheets().get(0);//Writetextinthespecificcellsheet.getCellRange(1,1).setText("HelloWorld");//Savethefilewb.saveToFile("HelloWorld.xlsx",ExcelVersion.Version2016)

2. 将数组导入Excel

//CreateaWorkbookinstanceWorkbookwb=newWorkbook();//GetthefirstworksheetWorksheetsheet=wb.getWorksheets().get(0);//Insertanarraytothefirstcolumn()String[]stringArray=newString[]{"Apple","Pear","Grape","Banana","Peach"}sheet.insertArray(stringArray,1,1,true);//Savethefilewb.saveToFile("InsertArray.xlsx",ExcelVersion.Version2016);

『玖』 java poi怎么导入excel数据

package poi; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel001 { public static void main(String[] args) { readXml("D:/test.xlsx"); System.out.println("————-"); readXml("d:/test2.xls"); } public static void readXml(String fileName){ boolean isE2007 = false; //判断是否是excel2007格式 if(fileName.endsWith("xlsx")) isE2007 = true; try { InputStream input = new FileInputStream(fileName); //建立输入流 Workbook wb = null; //根据文件格式(2003或者2007)来初始化 if(isE2007) wb = new XSSFWorkbook(input); else wb = new HSSFWorkbook(input); Sheet sheet = wb.getSheetAt(0); //获得第一个表单 Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器 while (rows.hasNext()) { Row row = rows.next(); //获得行数据 System.out.println("Row #" + row.getRowNum()); //获得行号从0开始 Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器 while (cells.hasNext()) { Cell cell = cells.next(); System.out.println("Cell #" + cell.getColumnIndex()); switch (cell.getCellType()) { //根据cell中的类型来输出数据 case HSSFCell.CELL_TYPE_NUMERIC: System.out.println(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; default: System.out.println("unsuported sell type"); break; } } } } catch (IOException ex) { ex.printStackTrace(); } } } 参考自http://blog.csdn.net/shuwei003/article/details/6741649

『拾』 java导入excel文件,用什么最好

你可以用数据源试试,将你的目标文件设成数据源,java操作数据源可以将其导成word,excel格式,当然这个只要你用java流把数据写入数据源,数据源就会根据你建立数据源时候的格式导成相应的数据,这个导成的过程是OS datasource 的特性,和java程序无关了就,当然你也不用费心去画格子,不过这样就失去灵活性了,没什么特别完美的方式