上傳excel到伺服器java
① 怎樣將Excel文件導入資料庫(在JSP環境下java代碼)
我只給你說下第二步怎麼樣吧,其他的你自己應該可以解決的。
通過使用第三方包jxl.jar,我以前導過數據,也是解析Excel,將Excel中的數據導入資料庫中,這個包很好下,如果找不到可以留下郵箱
//程序說明: 要導入jxl.jar到Classpath中。
import jxl.*;
import java.io.*;
import jxl.write.*;
/**
* <p>java讀取Excel表格,拷貼心、更新Excel工作薄 </p>
*/
public class Test1 {
public static void main(String[] args) {
jxl.Workbook rwb = null;
try{
//構建Workbook對象 只讀Workbook對象
//直接從本地文件創建Workbook
//從輸入流創建Workbook
InputStream is = new FileInputStream("D://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工作薄創建新的可寫入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://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();
}
}
}
② 怎樣通過JSP頁面上傳個Excel文件,並實現Java讀取EXCEL存入資料庫
1。通過jsp頁面接收上傳的excel文件到後台,
2,後台使用java連接資料庫
3.將excel文件通過io文件控制流讀入,然後使用jdbc寫入到資料庫
③ java中怎麼把文件上傳到伺服器的指定路徑
文件從本地到伺服器的功能,其實是為了解決目前瀏覽器不支持獲取本地文件全路徑。不得已而想到上傳到伺服器的固定目錄,從而方便項目獲取文件,進而使程序支持EXCEL批量導入數據。
java中文件上傳到伺服器的指定路徑的代碼:
在前台界面中輸入:
<form method="post" enctype="multipart/form-data" action="../manage/excelImport.do">
請選文件:<input type="file" name="excelFile">
<input type="submit" value="導入" onclick="return impExcel();"/>
</form>
action中獲取前台傳來數據並保存
/**
* excel 導入文件明頌
* @return
* @throws IOException
*/
@RequestMapping("/usermanager/excelImport.do")
public String excelImport(
String filePath,
MultipartFile excelFile,HttpServletRequest request) throws IOException{
log.info("<<悉孫<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
if (excelFile != null){
String filename=excelFile.getOriginalFilename();
String a=request.getRealPath("u/cms/www/201509");
SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服激陸鄭務器的路徑
}
log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );
return "";
}
/**
* 將MultipartFile轉化為file並保存到伺服器上的某地
*/
public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
System.out.println("------------"+path + "/"+ savefile);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
④ Java上傳Excel表格
public boolean myapp_readexcel(String filePath, int sheetNum) {//上傳的文件地址,sheetNum這個是excel下的那個sheet1的標志,sheet1這里對應數字是0
InputStream ins = null;
Workbook book = null;
try {
ins = new FileInputStream(filePath);
book = WorkbookFactory.create(ins);
getInsertData(book.getSheetAt(sheetNum));//這裡面進行讀取操作和業務邏輯
ins.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (ins != null) {
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return res;
}
private boolean getInsertData(Sheet sheet) {
boolean res = false;
Iterator<Row> rit = sheet.iterator();//每一行的迭代
while (rit.hasNext()) {
lineMap = getDataByRow(rit);
System.out.println(lineMap.get("0"));
System.out.println(lineMap.get("1"));...................................
}
}
public Map<String,String> getDataByRow(Iterator<Row> rit){
Map<String, String> lineMap;
Row row;
Cell cell;
row = rit.next();
lineMap = new ConcurrentHashMap<String, String>(); // 用於接收每列的數據。
for (int i = 0; i <= row.getLastCellNum(); i++) {
cell = row.getCell(i);
String k = ""; // 用於接收每個單元格的數據。
if (cell == null) {
lineMap.put(String.valueOf((i)), k); // 賦值。
continue;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
k = "";
break;
case Cell.CELL_TYPE_ERROR:
k = Byte.toString(cell.getErrorCellValue());
break;
case Cell.CELL_TYPE_STRING:
k = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
k = sdf.format(cell.getDateCellValue());
} else {
k = Integer.toString((int) cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
k = Boolean.toString(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
k = cell.getCellFormula();
break;
default:
k = "";
}
if ((k != null) && (!"".equals(k))) {
lineMap.put(String.valueOf((i)), k); // 賦值。
} else {
lineMap.put(String.valueOf((i)), ""); // 賦值。
}
}
return lineMap;
}