poi匯入Excel,相容03/07版本
pom.xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
lib下需要的jar1.匯入Excel,先獲取檔案的路徑,我這是使用的公司的外掛獲取的檔案路徑,在做的過程中可以直接使用Struts2的file 、fileFileName來獲取檔案路徑(案例也就這點區別)
public void uploadExcel() {
//附件
String savePath ="";
//檔案路徑獲取--使用的公司的檔案上傳外掛,先將檔案儲存資料庫,再從附件表中查詢出上傳的檔案獲取相應的路徑
List<Attachment> attachmentsByAttachIds = AttachmentHelper.getAttachmentsByAttachIds(attachIds);
for (int i = 0; i < attachmentsByAttachIds.size(); i++) {
Attachment attachment = attachmentsByAttachIds.get(0);
savePath = attachment.getSavePath();
}
analizeExcel(savePath);
GboatAppContext.output(JsonResult.createSuccess("成功!"));
}
2.根據獲取的檔案路徑,判斷檔案是.xls還是.xlsx結尾的檔案public void analizeExcel(String savePath) {
InputStream is = null;
List<ItemSort> itemSortList = null;
try {
version = (savePath.endsWith(".xls") ? version2003 : version2007);
String savepathRoot = ConfigUtil.getSavepathRoot();
String webRoot = savepathRoot + savePath;
is = new FileInputStream(webRoot);
if (version == 2003) {// 2003
POIFSFileSystem fs = new POIFSFileSystem(is);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
itemSortList = read2003(sheet);
} else if (version == 2007) {// 2007
XSSFWorkbook xwb = new XSSFWorkbook(is);
XSSFSheet sheet = xwb.getSheetAt(0);
itemSortList = read2007(sheet);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
3.匯入03/**
* 匯入03版
* TODO
* @param sheet
* @return
*/
public List<ItemSort> read2003(HSSFSheet sheet) {
List<ItemSort> userList = new ArrayList<ItemSort>();
int rowNum = sheet.getPhysicalNumberOfRows();
ItemSort ui = null;
for (int i = 1; i < rowNum; i++) {
HSSFRow row = sheet.getRow(i);
HSSFCell c = row.getCell(0);
ui = new ItemSort();
if (c != null) {
//迴圈獲取的excel表格,下面是根據自己的需求業務操作
c = row.getCell(0);
if (c != null) {
String itemCode=row.getCell(0).getStringCellValue();
ui.setItemCode(itemCode);
if(StringUtils.isNotBlank(itemCode)) {
if(itemCode.length()<3) {
ui.setItemFcode("");
}else {
String itemFCode = itemCode.substring(0,itemCode.length()- 2);
ui.setItemFcode(itemFCode);
}
}else {
ui.setItemFcode("");
}
} else {
ui.setItemCode("");
}
c = row.getCell(1);
if (c != null) {
ui.setItemName(row.getCell(1).getStringCellValue());
} else {
ui.setItemName("");
}
c = row.getCell(2);
if (c != null) {
ui.setItemExplain(row.getCell(2).getStringCellValue());
} else {
ui.setItemExplain("");
}
ui.setCatalogueManageId(catalogueId);
ui.setCreateDate(new Date());
itemSortBusiness.save(ui);
userList.add(ui);
}
}
return userList;
}
4.匯入07
/**
* 匯入07版
* TODO
* @param sheet
* @return
*/
public List<ItemSort> read2007(XSSFSheet sheet) {
List<ItemSort> userList = new ArrayList<ItemSort>();
int rowNum = sheet.getPhysicalNumberOfRows();
ItemSort ui = null;
for (int i = 1; i < rowNum; i++) {
XSSFRow row = sheet.getRow(i);
XSSFCell c = row.getCell(0);
ui = new ItemSort();
if (c != null) {
c = row.getCell(0);
if (c != null) {
String itemCode=row.getCell(0).getStringCellValue();
ui.setItemCode(itemCode);
if(StringUtils.isNotBlank(itemCode)) {
if(itemCode.length()<3) {
ui.setItemFcode("");
}else {
String itemFCode = itemCode.substring(0,itemCode.length()- 2);
ui.setItemFcode(itemFCode);
}
}else {
ui.setItemFcode("");
}
} else {
ui.setItemCode("");
}
c = row.getCell(1);
if (c != null) {
ui.setItemName(row.getCell(1).getStringCellValue());
} else {
ui.setItemName("");
}
//
//
c = row.getCell(2);
if (c != null) {
ui.setItemExplain(row.getCell(2).getStringCellValue());
} else {
ui.setItemExplain("");
}
ui.setCatalogueManageId(catalogueId);
itemSortBusiness.save(ui);
userList.add(ui);
}
}
return userList;
}
總結:03與07使用的jar不一樣,在操作的過程中呼叫相應的jar包的資料
03版使用的是:
HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell
07版本使用的是:
XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell
相關推薦
poi匯入Excel,相容03/07版本
由於系統需要提供給使用者匯入Excel檔案資料的功能,但Excel檔案有97-2003和2007+兩種格式,且要求給使用者有較大的靈活性。匯入Excel檔案的處理無非就是讀取Excel檔案的內容,然後根據一定的業務規則進行校驗,校驗正確後處理寫入系統。對Excel檔案的讀取可通過JXL或POI兩個Jar來完
poi匯入excel 根據檔名區分07(.xlsx)和03 (.xls)兩種情況進行解析
@RequestMapping(value = "/importMapping", method = RequestMethod.POST) @ResponseBody public void importPos( @RequestParam(value =
poi匯入excel,支援xls和xlsx格式
public static void checkFile(MultipartFile file) throws IOException{ //判斷檔案是否存在 if(null == file){ throw new AudaqueException("檔案不存在!");
java使用POI匯入Excel,並判斷合併單元格處,停止迴圈
public class ExcelCell { public static boolean isMergedRegion(HSSFSheet sheet,int row ,int colu
java poi 匯入excel時 讀取單元格內容的方法 ,其中包含excel中有函式的讀法
public static String getExcelCellValue(Cell cell) { String ret = ""; try { if (cell == null) { ret = ""; } else if (cell.get
POI匯入Excel檔案(包含.xsl和.xslx檔案相容問題)
匯入檔案這裡,分為了幾個部分: 第一步是讀取檔案,若未讀取到檔案,直接返回讀取失敗資訊; 第二步是讀取到檔案後,進行校驗,若不是excel檔案,返回檔案格式錯誤,讀取失敗資訊; 第三步是讀取sheet中資訊並檢驗,若有錯誤資訊則儲存
用Java POI操作Excel,讀取資料匯入DB2資料庫
Java操作Excel現在基本有兩種方法,就是使用JXL或POI,這兩者各有利弊,互有長短。下載地址:POI http://jakarta.apache.org/poi/index.html JXL http://www.andykh
解決POI匯入Excel時,數字精確到小數後一位的問題
今天在做匯入Excel的功能,遇到一個操蛋的問題,那就是如果excel某列為數字,例如123, POI 讀取會變成 123.0 如果遇到一些數字密碼或者手機號之類的需求,那可怎麼辦? 網上搜了一些辦法,使用後還是或多或少有點問題,於是想了一個不是方法的方法,如下程式碼片
java匯入與匯出excel,相容excel2003以及excel2007
java解析Excel(相容2003及2007):解析2003及以下使用HSSFWorkbook類,解析2007及以上使用XSSFWorkbook,如果解析類與excel版本不對應,丟擲相應的異常,例如HSSFWorkbook解析2007:org.apache.poi.po
解決POI匯入EXCEL相容問題
公司專案中需要用到excel匯入,在權衡使用jxl還是POI後,決定使用版本相容性更好的POI。下面介紹一下使用poi遇到的問題: 一開始寫了一個工具類關鍵程式碼如下: HSSFWorkbook workbook = new HSSFWorkboo
Java-poi匯入excel合併單元格
要匯入的excel示例 一、Action @Action("/import-excel") public void toimport() { String root = ServletActionContext.getSer
java實現簡單的poi匯入excel
示例程式碼 public void poiTest(){ File file = new File("xxx\\test.xlsx") ; InputStream input = new FileInputStream(file) ; String fileName =
關於POI匯入Excel表時報:java.lang.IllegalStateException: Cannot get a text value from a numeric cell
1. 問題描述: POI技術來實現Excel表格資料匯入到系統中的時候 ,單元格中的資料型別不是String型別的時候,執行row.getCell(0).getStringCellValue()然後再進行實體屬性的set方法時,會報:Cannot get a text
JS匯出Excel,相容IE,且保留樣式
var tableHtml='<html><head><meta charset="UTF-8"></head><body>'; tableHtml += lHtml; tableHtml += '
友好解決POI匯入Excel檔案行是不是為空
繼 解決POI讀取Excel如何判斷行是不是為空 後發現了一個問題。這個是一個銀行的需求,有20萬個客戶的資料要匯入系統,但有的資料是有問題的(不能正常匯入),但也有能正常匯入的。現在的問題是怎麼知道那些資料匯入了,那些沒有匯入呢? 全部能正常匯入: 全部失敗: 下面來看一下
java poi匯入Excel通用工具類
問題引入和分析 提示:如果不想看羅嗦的文章,可以直接到最後點選原始碼下載執行即可 最近在做一個匯入Excel的功能,在做之前在百度上面查詢“java通用匯入Excel工具類”,沒有查到,大多數都是java通用匯出Excel。後來仔細想想,匯出可
POI匯入Excel含.xls和.xlsx
之前用的jxl,但是遇到07版以上的.xlsx字尾的檔案,目前jxl我無法解決. 就用POI做了個簡單的匯入Excel表,含.xls和.xlsx字尾的匯入. POI中這兩種字尾的檔案,是使用2個物件來操作的. 先寫思路,後附上程式碼. POI跟JXL有所不一樣. POI
POI操作EXCEL,追加或覆蓋資料,輸入輸出流注意事項,jar包的選擇
首先有兩種資料格式,如果只是為用表格,那麼用xls格式就夠用了。但如果你還用得到XML的東西,那麼需要用xlsx這個格式。 實現程式碼很簡單。 2017.9.22補充: 1.一定要在XSSFWorkbook用輸入流當成建構函式引數建立新物件後,再使用輸入流。如果直接先把輸入
java運用poi匯入excel並存入資料庫(內含自己用的選擇路徑方法)
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templa
【C#MVC】使用ajaxFileUpload匯入Excel,並顯示在Grid中
學習瞭如何使用ajaxFileUpload(無重新整理上傳)匯入Excel檔案,並在頁面中顯示出來。C#,asp和MVC操作形似,這裡重點說MVC,asp只貼出來程式碼。 準備:在頁面引入js檔案。 Step1:(ajaxFileUpload是一個開