久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Apache POI全攻略:Excel/Word/PPT解析、讀寫與性能優(yōu)化

Apache POI全攻略:Excel/Word/PPT解析、讀寫與性能優(yōu)化 做Java后端這幾年只要碰到解析Excel、生成Word報表、提取PPT內(nèi)容這類需求十有八九繞不開Apache POI。這個庫就像Office文檔世界里的萬能轉(zhuǎn)換器xls、xlsx、doc、docx、ppt、pptx……只要你想讀想寫它基本都能接得住。這篇文章我就把用POI處理常見文件類型的經(jīng)驗整理一遍從選型、讀寫實操到排查問題一次說透。不管你是剛接觸POI的新手還是已經(jīng)被大文件內(nèi)存溢出折磨過的老手都能在這里找到點有用的東西。我的建議是先花幾分鐘把組件選型和對象模型搞清楚再去看代碼。很多人一上來就寫new HSSFWorkbook()等到文件稍微大點就OOM其實就是第一步選型就沒想明白。1. 內(nèi)容整體設計與思路拆解1.1 POI的組件劃分與文件格式對應關系POI不是一個大而全的單一庫它是按Office文檔類型拆成好幾個組件的。核心的幾塊POIFSOLE2復合文檔的底層解析庫HSSF和HWPF都依賴它。HSSF處理.xls也就是Excel 97-2003格式。XSSF處理.xlsx也就是Excel 2007的OOXML格式。SXSSFXSSF的流式版本專門用來寫超大Excel文件內(nèi)存占用極低。HWPFXWPF分別處理.doc和.docx。HSLFXSLF分別處理.ppt和.pptx。這里最需要注意的一點是HSSF只認.xlsXSSF只認.xlsx兩者API雖然長得像但對象體系是平行的不能混用。你拿HSSFWorkbook去讀xlsx運行時會直接拋異常。所以在設計工具類時我通常用WorkbookFactory.create(InputStream)這個入口它會根據(jù)文件流的前幾個字節(jié)自動判斷是HSSF還是XSSF然后把對應的工作簿對象返回給你。雖然這會在上層多做一層instanceof判斷但至少避免了手動指定格式帶來的誤判。1.2 為什么要用POI而不是別的方式有段時間網(wǎng)上流行用EasyExcel或FastExcel這兩個框架確實封裝得很舒服尤其是阿里開源的EasyExcel寫起來比原生POI短很多。但我的看法是EasyExcel解決的是“Excel讀寫”這一個場景而POI解決的是“Office文檔”這一整個面。你遲早會遇到這樣幾個需求讀取Word文檔里的段落和表格。批量替換PPT模板里的占位符文本。解析docx里嵌入的OLE對象。操作Excel里的圖表、圖片、數(shù)據(jù)透視表。這些需求就目前來看EasyExcel做不到只有POI能覆蓋。而且很多框架內(nèi)部底層用的還是POI只是套了新殼。所以就算你的日常需求只是讀寫Excel我也建議從POI的API入手把基礎認知建立起來后面學什么封裝框架都很快。2. 選型沒錯Excel讀寫才算入門2.1 三種Excel操作模式的取舍Excel操作涉及HSSF、XSSF、SXSSF三個模式初學者經(jīng)常糾結用哪個。我的建議很直接讀文件用WorkbookFactory.create()自動判斷不需要手動指定。寫.xls小文件用HSSFWorkbook簡單內(nèi)存可接受。寫.xlsx小文件用XSSFWorkbook數(shù)據(jù)量在幾萬行以內(nèi)都沒問題。寫超大.xlsx文件用SXSSFWorkbook通過滑動窗口控制內(nèi)存。很多人沒有意識到的點是XSSFWorkbook寫入時所有行對象和數(shù)據(jù)都駐留在內(nèi)存里當你寫到10萬行以上內(nèi)存占用輕松超過幾百MB嚴重的直接OOM。而SXSSFWorkbook通過一個“窗口”來控制駐留內(nèi)存的行數(shù)窗口之外的行會被刷寫到磁盤臨時文件內(nèi)存占用一下就降下來了。模式對應格式內(nèi)存特征適用場景HSSF.xls全部駐留內(nèi)存少量數(shù)據(jù)兼容老格式XSSF.xlsx全部駐留內(nèi)存常規(guī)Excel操作樣式復雜SXSSF.xlsx窗口內(nèi)駐留內(nèi)存超出寫磁盤大數(shù)據(jù)量導出報表生成另外要提醒一句SXSSFWorkbook只支持寫入不支持讀取。如果你想邊讀邊寫超大文件不能指望SXSSF幫你完成讀取操作讀取還是得靠XSSF。2.2 對象模型從工作簿到單元格的四級結構POI的Excel模型是清晰的四級結構寫代碼之前先把這個結構在腦子里過一遍Workbook整個Excel文件一個文件對應一個Workbook實例。Sheet一個工作簿里的某個工作表。一個Workbook可以包含多個Sheet。Row工作表中的一行坐標從0開始。Cell行中的一個單元格坐標也是從0開始。實際操作中很容易犯的錯是直接拿row.getCell(0)不做空值判斷。在Excel里一個行對象即使某些單元格沒寫內(nèi)容行本身是存在的但如果你用sheet.getRow(5)第5行如果完全沒被使用過getRow會返回null。同樣的row.getCell(2)在單元格內(nèi)容為空時也可能返回null。我的習慣是封裝一個工具方法private Cell getCellOrEmpty(Row row, int index) { Cell cell row.getCell(index); return cell ! null ? cell : row.createCell(index); }讀的時候用getCell拿到就直接用避免NPE寫的時候用這個工具方法確保單元格一定存在。這個習慣幫我省了不少調(diào)試時間。3. 核心細節(jié)解析與實操要點3.1 讀取Excel的關鍵細節(jié)類型判斷與日期處理讀取表格的時候大多數(shù)人第一步就踩坑。直接用cell.getStringCellValue()去取值如果這個單元格是數(shù)字類型直接拋異常。所以讀取之前一定要判斷單元格類型。POI提供了CellType枚舉常見的值有STRING、NUMERIC、BOOLEAN、FORMULA、BLANK等。這里最坑的是日期。在POI里日期和數(shù)字在底層都是NUMERIC類型區(qū)分它們的唯一方法是DateUtil.isCellDateFormatted(cell)。這個方法通過檢查單元格的數(shù)字格式來判斷它是不是日期格式。所以在讀單元格時我的標準寫法是switch (cell.getCellType()) { case NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); value sdf.format(cell.getDateCellValue()); } else { value String.valueOf(cell.getNumericCellValue()); } break; case STRING: value cell.getStringCellValue(); break; case BOOLEAN: value String.valueOf(cell.getBooleanCellValue()); break; case FORMULA: value cell.getCellFormula(); break; default: value ; }另外一個容易被忽視的點是getNumericCellValue()返回的是double如果你拿它去拼接字符串遇到長數(shù)字ID比如業(yè)務編號、手機號會被轉(zhuǎn)成科學計數(shù)法。比如1.2345678E7這種形式給前端肯定是不能用的。解決辦法是先用BigDecimal.valueOf(cell.getNumericCellValue()).toPlainString()轉(zhuǎn)成普通字符串或者直接判斷單元格的格式類型后再處理。3.2 寫入Excel的關鍵細節(jié)樣式、日期與單元格類型寫入Excel比讀取稍微簡單但依然有講究。第一是樣式對象復用。POI里創(chuàng)建樣式是一個相對重的操作每創(chuàng)建一個CellStyle就對應底層一個樣式記錄。如果你在循環(huán)里每一行都新建樣式文件體積會暴漲而且生成速度肉眼可見地變慢。正確做法是把需要用的幾種樣式提前創(chuàng)建好循環(huán)里直接給單元格setStyle。CellStyle headerStyle workbook.createCellStyle(); Font headerFont workbook.createFont(); headerFont.setBold(true); headerFont.setColor(IndexedColors.WHITE.getIndex()); headerStyle.setFont(headerFont); headerStyle.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);第二是日期寫入。直接cell.setCellValue(new Date())也能寫入但顯示出來可能是一串數(shù)字。原因是默認單元格格式不是日期格式。正確的做法是創(chuàng)建一個日期格式的CellStyleCellStyle dateStyle workbook.createCellStyle(); dateStyle.setDataFormat(workbook.createDataFormat().getFormat(yyyy-MM-dd HH:mm:ss)); cell.setCellStyle(dateStyle); cell.setCellValue(new Date());第三是單元格類型先設后寫。寫字符串之前最好先cell.setCellType(CellType.STRING)寫數(shù)字之前設成NUMERIC。雖然POI很多時候會自動轉(zhuǎn)換但手動設置類型能防止一些老版本兼容問題。3.3 表格公式與單元格引用的處理POI支持寫入公式寫入方式很簡單cell.setCellFormula(SUM(A1:A10))。但有個坑是用POI寫入公式后打開文件時舊版Office會顯示0不會自動計算。這是因為POI寫入的公式單元格沒有緩存計算結果。解決辦法有幾種在寫入公式后用workbook.getCreationHelper().createFormulaEvaluator().evaluateAll()手動計算結果并緩存。如果不需要動態(tài)計算直接在POI生成文件前計算好結果把結果值寫入單元格這樣最穩(wěn)妥。設置Workbook.setForceFormulaRecalculation(true)強制Office打開文件時重新計算。實測下來用evaluateAll()在大多數(shù)情況下能解決顯示問題但如果公式本身依賴跨Sheet引用建議做一次完整的打開驗證。這個我后面在問題排查部分還會提到。4. 實操過程與核心環(huán)節(jié)實現(xiàn)Excel大數(shù)據(jù)導出與服務端解析4.1 大數(shù)據(jù)量導出SXSSFWorkbook的滑動窗口原理與調(diào)優(yōu)先直接說我測試過的場景某次模擬項目需要導出50萬行、20列的Excel業(yè)務流水。用XSSFWorkbook寫寫到大概20萬行時內(nèi)存就已經(jīng)飆到將近1.5GB再往后直接拋出OutOfMemoryError。換成SXSSFWorkbook之后內(nèi)存穩(wěn)定在200MB以內(nèi)。SXSSF的核心機制是“滑動窗口”new SXSSFWorkbook(windowSize)中的windowSize表示內(nèi)存中保留的行數(shù)。每新增一行超過windowSize范圍的行就會被刷寫到臨時文件。windowSize默認是100但我在實際項目里通常設置成1000因為SXSSF的行對象本身比較輕1000這個數(shù)量級對內(nèi)存影響不大又能減少頻繁刷盤帶來的I/O開銷。SXSSFWorkbook workbook new SXSSFWorkbook(1000); SXSSFSheet sheet workbook.createSheet(流水數(shù)據(jù)); // 寫表頭 Row headerRow sheet.createRow(0); // ... 設置表頭樣式和內(nèi)容 // 寫數(shù)據(jù)50萬行數(shù)據(jù)循環(huán)寫入 int rowNum 1; for (SomeData data : largeDataList) { Row row sheet.createRow(rowNum); row.createCell(0).setCellValue(data.getId()); row.createCell(1).setCellValue(data.getName()); // ... } // 關鍵把臨時文件刷到輸出流然后清理臨時文件 workbook.write(outputStream); workbook.dispose();這里的dispose()很多人會漏掉。SXSSFWorkbook在寫完后會留下臨時文件如果不顯式調(diào)用dispose()臨時文件不會被清理可能造成磁盤空間持續(xù)被占用。我見過一個生產(chǎn)環(huán)境出問題就是沒調(diào)dispose每次導出都留下幾十MB的臨時文件跑了幾個月磁盤滿了。還有一個調(diào)優(yōu)點是sheet.trackAllColumnsForAutoSizing()。如果你用了sheet.autoSizeColumn()系統(tǒng)需要掃描每一列的所有行來計算列寬。在大數(shù)據(jù)量下這個操作會嚴重影響性能。我的建議是大數(shù)據(jù)導出根本不要用autoSizeColumn直接在代碼里根據(jù)業(yè)務數(shù)據(jù)長度計算最大列寬然后setColumnWidth就完了。4.2 服務端做Excel解析的全流程文件流、WorkbookFactory與流關閉服務端接收上傳的Excel文件解析入庫這是一個非常常見的場景。完整的流程并不復雜但細節(jié)決定成敗。首先是文件流的問題。很多人喜歡把上傳的MultipartFile直接轉(zhuǎn)成InputStream丟給POI這本身沒錯但要注意POI的XSSF解析器在解析xlsx時底層使用的是ZipInputStream解析過程中會從流里讀取大量數(shù)據(jù)。如果你傳入的InputStream網(wǎng)絡不穩(wěn)定或者沒有緩沖很容易出現(xiàn)IOException。所以我在傳流之前都會先把他包裝成BufferedInputStream給IO加一層緩沖。try (InputStream fis new BufferedInputStream(file.getInputStream())) { Workbook workbook WorkbookFactory.create(fis); // 解析邏輯... }然后是Workbook使用完必須關閉。HSSFWorkbook和XSSFWorkbook都實現(xiàn)了Closeable不關閉會占著文件句柄不釋放。特別是在Windows環(huán)境下不關閉工作簿Excel文件會被鎖定后續(xù)刪除文件會提示“文件被占用”。解析時的核心邏輯是按行遍歷但要注意空行。用戶隨手敲了幾行空格POI里sheet.getRow()會返回null或者Row對象存在但所有單元格都是空的。所以解析循環(huán)里要加一個判斷for (Row row : sheet) { if (row null || isRowEmpty(row)) { continue; } // 處理業(yè)務邏輯 } private boolean isRowEmpty(Row row) { for (int c row.getFirstCellNum(); c row.getLastCellNum(); c) { Cell cell row.getCell(c); if (cell ! null cell.getCellType() ! CellType.BLANK) { return false; } } return true; }4.3 樣式讀取與合并單元格處理讀Excel時業(yè)務上偶爾需要讀出單元格的合并范圍或者背景色。合并單元格的判斷用sheet.getMergedRegions()返回的是一個CellRangeAddress列表。遇到合并單元格時POI的規(guī)則是合并區(qū)域中只有左上角的單元格是有值的其他右下區(qū)域都是空白。如果你遍歷所有單元格去取值合并區(qū)域里非左上角的單元格會拿到null或空字符串。這時候需要先構建一個合并區(qū)域到值的映射再去填數(shù)據(jù)否則解析出來的表格內(nèi)容會缺一塊。MapString, String mergedValueMap new HashMap(); for (CellRangeAddress range : sheet.getMergedRegions()) { int firstRow range.getFirstRow(); int firstCol range.getFirstColumn(); Cell cell sheet.getRow(firstRow).getCell(firstCol); String value getCellValue(cell); for (int r range.getFirstRow(); r range.getLastRow(); r) { for (int c range.getFirstColumn(); c range.getLastColumn(); c) { mergedValueMap.put(r _ c, value); } } }這樣后面取值時先看單元格本身有沒有值沒有就到這個映射里查基本能保證合并單元格的內(nèi)容不丟。這個技巧在處理復雜報表時非常實用。5. Word與PPTPOI的另一半能力5.1 XWPF處理docx讀取段落、表格、修訂內(nèi)容很多人以為POI只能弄Excel實際上Word處理也是POI的主場。處理.docx用的是XWPF組件核心對象是XWPFDocument。一個文檔由若干個XWPFParagraph段落和XWPFTable表格組成。讀取Word段落文本代碼非常簡單XWPFDocument document new XWPFDocument(new FileInputStream(xxx.docx)); for (XWPFParagraph paragraph : document.getParagraphs()) { System.out.println(paragraph.getText()); }表格解析稍微復雜一點for (XWPFTable table : document.getTables()) { for (XWPFTableRow row : table.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { System.out.println(cell.getText()); } } }這里有個實際工作里經(jīng)常遇到的坑Word里的段落不只有正文表格里的內(nèi)容也會被拆分到document.getParagraphs()里嗎答案是不會。表格內(nèi)容在getTables()里正文在getParagraphs()里但如果表格跑到文本框里或者嵌套在頁眉頁腳里這兩個方法都可能拿不到。遇到復雜的docx我一般用document.getBodyElements()遍歷所有body元素再逐個判斷是段落還是表格。寫入Word相對簡單創(chuàng)建XWPFParagraph然后paragraph.createRun().setText(內(nèi)容)就能寫入文本。但要注意POI對docx的樣式支持比較弱如果你需要復雜的排版比如頁眉頁腳、分頁符、目錄POI寫起來會非常痛苦。我的經(jīng)驗是如果只是生成簡單文本報告POI完全夠用如果是要生成精美合同或正式公文建議用模板引擎配合docx4j或者干脆用Word模板填充的方式。5.2 XSLF處理pptx從幻燈片里提取文本與批量替換PPT的讀取也是常見需求尤其是“從幾十個PPT里批量提取全部文字”這種工作。XSLF組件處理.pptx核心對象是XMLSlideShow。一個演示文稿包含多個XSLFSlide每個slide里有多個XSLFShape可能是文本框、圖片、表格等。XMLSlideShow ppt new XMLSlideShow(new FileInputStream(xxx.pptx)); for (XSLFSlide slide : ppt.getSlides()) { for (XSLFShape shape : slide.getShapes()) { if (shape instanceof XSLFTextShape) { XSLFTextShape textShape (XSLFTextShape) shape; System.out.println(textShape.getText()); } } }批量替換PPT模板里的占位符文本時也有一個坑PPT里的文本框可能包含多個文本段落每個段落里有多個Run直接把占位符字符串塞進setText()會丟失樣式和段落格式。正確做法是遍歷每個XSLFTextParagraph再遍歷每個XSLFTextRun在run級別做字符串替換。這樣替換后能保留原來字體、大小、顏色等格式。if (shape instanceof XSLFTextShape) { XSLFTextShape textShape (XSLFTextShape) shape; for (XSLFTextParagraph paragraph : textShape.getTextParagraphs()) { for (XSLFTextRun run : paragraph.getTextRuns()) { String rawText run.getRawText(); if (rawText ! null rawText.contains(${name})) { run.setText(rawText.replace(${name}, 某開發(fā)者)); } } } }這個方案實測穩(wěn)定生成的文件在Office和WPS里都能正常打開。如果是處理.ppt老格式用HSLF組件API和XSLF基本對稱同樣適用。6. 常見問題與排查技巧實錄6.1 問題速查表癥狀、原因、解法癥狀原因解法打開POI生成的Excel提示文件損壞寫入過程中未關閉Workbook或?qū)懭牒笪磃lush輸出流確保使用try-with-resources關閉Workbook并在關閉前調(diào)用workbook.write日期單元格讀出來是數(shù)字單元格格式類型不是日期格式DateUtil.isCellDateFormatted返回false檢查源文件的單元格格式或者在代碼里加一層自定義日期判斷邏輯長數(shù)字ID顯示為科學計數(shù)法getNumericCellValue()返回double后直接轉(zhuǎn)字符串用BigDecimal.valueOf(...).toPlainString()處理公式單元格顯示0POI寫入公式但沒有緩存計算結果使用FormulaEvaluator.evaluateAll()計算結果或設置setForceFormulaRecalculation(true)大文件寫入OOM使用XSSFWorkbook而非SXSSFWorkbook數(shù)據(jù)量大時改用SXSSFWorkbook并設置合理窗口大小解析得到的合并單元格數(shù)據(jù)缺失合并區(qū)域只有左上角有值構建合并區(qū)域到值的映射POI導入依賴后方法找不到版本沖突引了低版本的POI依賴統(tǒng)一POI版本排除傳遞性依賴檢查版本號6.2 版本依賴沖突這個隱形殺手POI項目里的坑有一大半不是代碼問題而是依賴問題。POI的包拆得很細poi、poi-ooxml、poi-ooxml-schemas、poi-scratchpad還有個xmlbeans。這些包的版本必須嚴格對應否則運行時會遇到各種NoClassDefFoundError或NoSuchMethodError排查起來非常絕望。我的建議是用Maven管理依賴時POI相關的所有包全部統(tǒng)一到一個版本并且用BOM或父POM的dependencyManagement來約束。如果項目里還有其他依賴間接引用了舊版POI一定要用exclusion排除掉。dependency groupIdorg.apache.poi/groupId artifactIdpoi/artifactId version5.2.5/version /dependency dependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version5.2.5/version /dependency dependency groupIdorg.apache.poi/groupId artifactIdpoi-scratchpad/artifactId version5.2.5/version /dependency從我實測的版本來看5.x系列在性能和穩(wěn)定性上明顯優(yōu)于3.x系列。如果還在用3.17之類的老版本建議升級。升級后需要改的主要是各枚舉常量的命名比如Cell.CELL_TYPE_STRING這種常量改為CellType.STRING枚舉方法簽名上也有部分變化但整體遷移成本不大。6.3 關于性能實測的一些經(jīng)驗數(shù)據(jù)有同學會問POI到底能跑多快這個沒法給一個固定的數(shù)字因為和機器、JVM參數(shù)、數(shù)據(jù)結構復雜度都有關。但我可以給幾組我在同樣環(huán)境下的對比數(shù)據(jù)供參考寫入10萬行、10列純字符串XSSFWorkbook耗時約8秒內(nèi)存峰值約600MB。寫入50萬行、10列純字符串SXSSFWorkbook耗時約35秒內(nèi)存峰值約200MB。讀取10萬行、10列數(shù)據(jù)并做簡單解析XSSFWorkbook耗時約3秒。這些數(shù)據(jù)的意義在于如果只是萬級數(shù)據(jù)量XSSF和SXSSF差別不大你可以隨便選但到了十萬級以上的導出需求SXSSF就是唯一合理選擇。JVM參數(shù)上也建議導出場景加大堆內(nèi)存比如設置-Xms512m -Xmx1024m不要在默認堆大小下跑大數(shù)據(jù)量操作否則即使SXSSF也扛不住。6.4 排查問題的一個標準姿勢POI運行時報錯很多人第一反應是去搜錯誤信息搜半天可能也找不到對應的解決方案。我的排查方法比較固定第一步看異常的第一行是哪個類拋出來的。如果類名里帶org.apache.poi那問題基本就是POI自身如果是java.lang.NoClassDefFoundError那一定是依賴沖突。第二步看異常的最后一個Caused by那個才是底層根本原因。POI的異常經(jīng)常被包裝好幾層只看外層信息完全沒有意義。第三步如果是讀文件報錯先確認文件本身能不能用Office打開。有時候文件被加密、損壞、或者根本不是真的Excel文件只是改了后綴名的HTML文件POI報錯是正常的這時候應該先跟前端確認文件格式規(guī)范。7. POI處理文件類型的一些擴展玩法除了Excel、Word、PPT老三樣POI還支持Visio.vsd、Publisher.pub等格式但這些邊緣格式在實際項目中很少用到我就不展開了。更值得關注的是POI在項目里的一些擴展玩法國際化Excel導出通過Locale和日期格式綁定自動給不同語言環(huán)境生成對應格式的日期、貨幣列。結合模板生成報表提前做一份帶樣式和公式的xlsx模板用POI打開后只填數(shù)據(jù)區(qū)域保留模板里的原有樣式。這個方案能省去大量樣式代碼做出來的報表外觀也最靠譜。讀取PPT備注信息XSLFSlide.getNotes()能讀取演講者備注可以做“批量提取所有PPT備注并匯總成文檔”的小工具實測效率極高。導出加密ExcelPOI支持對Workbook設置密碼workbook.writeProtectWorkbook(password, username)或sheet.protectSheet(password)。這里注意這個保護級別比較低只能防君子不能防小人如果需求是強加密建議用poi-ooxml底層的加密方式來寫。這些擴展玩法里我實際落地最多的還是模板填數(shù)據(jù)方案。做月度數(shù)據(jù)報表時把模板樣式、頁眉、Logo都提前在Excel里調(diào)好POI只負責寫入數(shù)據(jù)行。這樣不管業(yè)務怎么改樣式開發(fā)這邊基本不用動代碼改模板就夠了交付效率和維護成本都比純代碼生成樣式好太多。8. 實操中反復踩過的幾個坑最后分享幾個我在項目里真正踩過、并且導致線上事故的細節(jié)。這些不算高深技術但非常容易忽略。第一個是Workbook關閉順序。我見過有人把workbook.write(outputStream)放在finally塊里但outputStream還沒flush就關了Workbook結果文件缺失末尾數(shù)據(jù)。正確順序是先寫完Workbook再關閉Workbook最后關閉輸出流。用try-with-resources嵌套就可以保證這個順序。try (Workbook workbook new XSSFWorkbook(); ByteArrayOutputStream out new ByteArrayOutputStream()) { // 填充數(shù)據(jù) workbook.write(out); // out.toByteArray() 寫入文件或返回給前端 }第二個是SXSSF的臨時文件目錄。SXSSFWorkbook寫臨時文件默認使用系統(tǒng)臨時目錄在某些容器環(huán)境里臨時目錄權限受限會拋出java.io.IOException: No such file or directory。遇到這個問題可以用System.setProperty(java.io.tmpdir, /自定義目錄)或者顯式配置SXSSFWorkbook的臨時目錄來規(guī)避。第三個是關于內(nèi)存監(jiān)控。我建議在POI處理的代碼里加一個輕量級的內(nèi)存日志用Runtime.getRuntime().totalMemory() - freeMemory()算一下當前堆內(nèi)存占用處理前后各打一條。這樣在上線后就能直觀看到文件操作對內(nèi)存的影響不會等到OOM了才后知后覺。個人經(jīng)驗是POI這個東西上手容易精通需要積累。大部分人在初期都會把時間花在死磕API上但真正決定項目穩(wěn)定性的往往是版本管理、流關閉、內(nèi)存控制和異常處理這些看起來不起眼的細節(jié)。只要這幾個點都處理好了POI在絕大多數(shù)場景下都能交出讓人滿意的答卷。如果你正在為某個Office文件處理需求選型從一個小的工具類開始用POI練手我覺得是最快的入門路徑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青操影院| 操高情无码| 神马久久久久久久久久久久| 精品视频一区二区| 亚欧成人一级片在线播放| 女人午夜视频777| 涩涩久久精品| 99久久婷婷国产综合| 人妻精品一区一区三区蜜桃91| av国产无码| 国产午夜精品一区二区三区牛牛| 亚洲欧洲偷拍一区| 日韩欧美操逼xxx| 9超碰免费| 蜜乳视频网站| 国产白丝网站| 国产一级高清免费观看| 久久久无码精品人妻二区 | 日韩国产在线观看av| 97超碰人妻| 久久爽爽精品| 欧美成人9797| 亚洲精品乱码线路中文字幕 | 亚欧视频在线| 国产一二三在线视频五十路| 欧美色图 人妻| 99久久精品无码一区二区| 97人人夜| 久久激情视频| 日本精品性生活久久久| 久久熟女人| 亚洲色图日韩精品| 日韩午夜精品一区二区三区电影| 亚洲中文字幕在现观看| 美女91网址| 超碰97网址| 操我啊啊啊啊啊| 99久久精品无码一区二区| 成人性爱av.com| suv精产一二三区| 妇女视频网站| 午夜性| 五月天综合| 狠狠操官网| 色操逼网| 国产又色又爽又舒服的三级视频| 国产超碰人人操| www.丁香五月| 激情啪啪拍91| 午夜大香蕉| 国产真实野战在线视频| av资源在线播放天堂| 岛国激情视频在线观看| 五月丁香综合网| 26uuu国产| 一区二区 韩日AV| 亚洲啪啪性视频| 91碰碰| 啊嗯好大视频在线观看| 艳美熟妇先锋一二三区| 成人色女网| 东北女人操比视频| 日日黄色三级网站| 亚洲精品97中文字幕| 老熟女熟妇| 亚洲欧美日韩电影网站一区| 大色网久久| 97干色| 美女尤物人人操| 操逼网站视频漫画国产| 国内91熟女人妻丝袜天天精品视频在线 | 少妇激情一区二区三区视频| 精品无人区麻豆乱码1区2区图片| 91精片| 在线岛国新天堂8| 乱操乱伦AV| 超碰在线人妻中文字幕| 亚洲黄网在哪免费看| 夜夜草网站| 丁香婷婷激情五月天无毒不卡| 性高潮久久久久久久久久久| 日韩精品在线放| 八人操人人摸人人看| 97av在线视频| 亚州熟妇精品| 欧美成人一级麻豆| 五月婷婷六月丁香| 国语精品av| 高清无码在线播放网站| 人妻中文字幕日韩电影| 亭亭丁香激情| 97国产超碰| 性综合网| 日日日日做夜夜夜夜无码| 夜间福利片1000无码| 亚洲成人久久一区二区| 激情四射熟女丝袜| 欧美综合网在线| 91在线视频观看国产| 丰满人妻-区二区三区免费| 欧洲天天在线| 校园春色中文字幕AV| 熟女人妻一区二区三区免费看 | 午夜天堂网| 久久9精品| 老司机射| 高清不卡 中文 人妻| 亚洲a色| 天天弄天天操| 大香蕉啪啪啪啪在线| 性天堂| 一区二区三区在线资源| 亚洲成人贴图| 天天操天天射青青草| 欧美日韩人妻婷婷一区| 国产精品熟女丝袜一区二区| 嫩草黄页| 日韩黄色一区二区三区| 人人摸人人舔一区二区| h无码动漫在线观看| 美骚妇av高清在线| 天天操天天干一区二区| 一道本久久棕合爱| 丰满人妻一区二区三区蜜桃视频| 先锋精品av色鲁| 欧美性高潮在线| 五月天精品| 色97欧美| 日日日啊啊啊| 在线观看高清AV| 国产又大又粗又长视频在线| 午夜一区二区三区国产| 欧美体内射精| 任你艹| 亚洲学生妹高清av| 青娱乐蜜桃臀AV色婷| Sekablack无码一区| 极品AV网站在线观看| 色爱三区| 亚欧洲一区二区视频| 久久一区二区三区入口| 3PAV乱伦视频| 好涩综合| 国产精品网站www| 久久久久成人亚洲国产| 亚洲欧美91| 伊人影院中文字幕| 无码一区二区精品视频久久久春药| 天天综合有色网| 无码丰满熟妇一区二区浪潮AV| 日韩av情韩国爱禁区av一区二区| 丁香六月婷婷| 性爱视频无打码在线观看| 长久操视频| AV九九| 强被迫伦姧在线观看无码网站| 亚洲性少妇| 婷婷五月天社区| 亚洲第一页色网| 亚洲图片欧美91N| 狠狠中文字幕| 啊啊啊爽爽| 亚洲的天堂网| 九九九久千久久激情蜜桃在线看 | 亲子敌伦对白在线播放| 日韩精品国模| 99国产在线绯色一区| 激情小说在线视频| 锕锕好爽 死我在线观看| 热久久这里只有精品| 国产日韩精品suv| 日本免费不卡二区| 久久青青草原免费视频| 欧美日韩在线小说| 情色大香蕉| 一区二区三区四区久久视1| 狠狠色综合网| 亚洲系列第一页| 最新日本中文字幕| 性性欧美| 97色诱| 国产精品小视频一区二区三区| 国产精品婬乱一级毛片彝族| 69XX一中文字幕人妻91| 偷拍盗拍亚洲色图图片| 51一区二区三区| 超碰97久久国| 99色热| 97爱碰| 一区中文字幕二区日韩| 日韩二三区| 亚洲午夜免费狠狠干| 亚洲色图殴美色图激情乱伦| 五月丁香婷婷色| 蜜桃av综合网发布| 97最新在线播放视频| 亚欧毛片基地国产毛片基地| 91精品国产91久久青草| 久久精品店| 中文字幕乱妇免费视频| 狠狠热这里都是精品| 久久9精品视频| 色婷婷aV一区二区三区麻豆综合| 蜜桃臀 后入 一区 二区 三区 在线| 91校园春色长篇| 久操精品网| 日本网色| 偷拍欧美激情| 国产av青草| 中美日韩毛片| 久久少妇人妻| 日本不卡免费二区| 无码国产精品96久久久久孕妇| henhen91| 国产在线能看的你懂的| 日韩欧美tv一区二区在线观看| 日本狂喷奶水在线播放212| 不卡av在线中文字幕| 国产又色又粗又黄又爽| 涩涩这里只有精品视频| 九九无码视频| 思思热影视| 日本在线视频导航| 一二三四免费视频| 大香蕉伊人一区在线观看| 少妇国产不卡| 不卡一区视频| 亚洲人妻五月丁香婷婷| V A在线| 中国一级特黄大片护士| 色999亚洲人成色| 9久综合网| 日韩伦理久 久久 清纯| 久操在97| 4tube欧美女厕所| 欧美色干| 成人无码在线超碰网| 91人妻做a观看视频| 欧美视频中文字幕区| 五月色综合| 伊人991| 久9久9久9久9久9久9| 亚洲色图 欧美| 乱伦图一区| 女优视频第10页| 人妻精品一区二区全免费| 精品成人女人久久| 国产精品人妻无码久久久互動交流| 思思视频免费看网站| 日本福利二区视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91精品国| 免费看A片毛毛片在线播| 免费视频无码| 美女天天干| 国产强奸乱伦xd| 婷婷99狠狠| 免费亚洲国产精品久久一区| 国产熟女精品一区二区| 人人操人人摸人| 欧美最婬乱婬爆婬性视频| 亚洲 欧美 综合 91| 校园春色综合网| 婷婷AV一区二区三区| 精品一区96| 97网站在线观看 | 亚洲男人天堂网久久| 抽插一区二区视频| 国产成人久久久精品免费AV| 97bbn| 啪啪啪综合网| 91亚·色| 超碰人妻久久| 91精品91久久久中77777| 好看的久久不射无码影视影院| 青青青青青手机视频| japan日本高清乱xxxx| 天堂资源欧美| 国产无吗在线播放| 国产精品对白内射| 超碰国产精品无码| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 91一区二匹| www九九热| 四虎免费在线播放| 亚洲成?V人片在线观看福利| 男女香蕉一区二区| 五月婷亚洲精品天堂| 五月婷色| 国产精品久久久亚洲第一牛牛_在线观看 | 欧美午夜色妇色鬼| 欧美性生活男人的天堂| 久久视网78| 日韩高清黄片| 久久久婷婷| 欧美一级美片在线观看免费| 伊人久久大香线综合无码| 男女做爰猛烈动高潮A片免费应用| 狠狠躁AV| 精品日韩人妻精品一二三区| 亚洲男人的天堂AV| 亚洲免费成人在线高清无码视频| 亚州 综合 色图| 日韩在线性爱免费视频| 97综合久第一页| 亚洲各类熟们中文字幕| 久夜操| 亚洲影视综合网| 强被迫伦姧在线观看无码网站| 日本999精品视频| 激情抓乳插进去啪啪啪日韩 | 成 人 A V免费视频在线观看| 婷婷亚洲综合| 色综合一区二区三巨| 啪一啪免费视频| 干B| 午夜a成v人电影| 亚洲男人的天堂V| 26uuu最新| 日本亚洲熟女视频| 99re这里只有精品2| 色狠狠色| 91丨国产丨白浆秘 洗澡动漫| 美女的肌被草喷水视频| 久久‘黄片视频| 亚洲成成熟女人综合一区二区| 五月天激情小说网| 国产av波波国产精品| 玖玖爱综合网| 欧美色图私拍91| 黄色大香焦1级‘′‘| 亚洲欧美综合图片| 欧美一二在线| 99re国产中文字幕| 国产三级在线现体验区| 亚洲综合色在线| 天天影视网综合少妇| 国产传媒午夜理伦精品| 蜜臀久久99精品久久久久久酒店| 十八禁黄色成人网站观看| 精品性爱无码在线播放| 精品久久久久久AV无码| 欧美 亚洲| 久久久久78| 久久精彩免费视频| 一级黄色性爱A级片| 久久精品店| 久久久久久少妇| 91久久精品蜜臀| 成年女人黄网站| 青青色在线观看| 超碰97综合网| 欧美综合网1| 99re3这里只有精品| 入口操逼网站| 国语av最新自产拍在线观看| 久久黄色性爱视频| yw尤物av无码点击进入麻豆| 一级性爱视频免费观看| 久操国产在线| 亚洲双插| 青青青草伊人精品| 日韩欧亚中文在线| 蜜奶av| 开心五月天激情网| 国产综合操逼高清| 一级久久性爱视频| 3d成人精品一区二区| 国产毛片毛片4p懂色| JuliaAnn丝袜熟女系列| 91亚洲人| 久久久偷拍| 97精品一区| 欧亚韩国999| 国产精品成人无码av无码免费| 午夜啪| 懂色AV蜜臀无码精品APP| yirendaxiangjiashipin| 啊视频在线| 日韩av影片在线观看| 在线播放免费av福利片| 国产精品无码成人精品| 老子午夜伦不卡影院| 国产1024在线播放| 精品国产无码中文| 在线国产一区二区av| 国产综合永久精品日韩鬼片| 国产午夜激片Av毛片不卡| 亚洲无吗在线视频| 亚洲欧美国产成人综合不卡| 无码聚合| 婷婷色中文字幕| 97色婷| 玖玖视频在线资源一区二区三区| 日韩三级网址| 久久宗合亚洲| 日韩欧美女求操每天更新| 精品人妻一区二区三区免费视频| 欧美色青| A级毛片在线看免费| 欧美成人四级在线播放| 欧美极度丰满熟妇hd| 亚洲欧洲综合视频在线| 久草综合京东| 国产熟女二区| 久久蜜桃一区二区| 国产 日韩 欧美一区| 性暴力欧美猛交在线直播| 操逼片中文| 淫妻综合网| 精品久久久久瑟瑟| 日本精品九九九| 78m啪啪啪| www国产无码| 亚洲国产欧美另类自拍| 婷婷丁香五月激情啪啪| 欧美精品久久96人妻无码| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 99啪啪| 97丝袜亚洲在线播放| 欧成人在线| 国产二区三区免费视频| 亚洲免费看片| 欧美天堂超碰97| 东京热,男人的天堂| 久久AV无码AV| 日本三级R| 丰满人妻一区二区三区在线| 综合自拍| 日韩激情啪啪啪| 亚洲无套久久嗯嗯| 在线播放欧洲免费av| 探花视频免费观看国产专区| 色五月网址| 涩涩久久精品| 男女做爰猛烈动高潮A片免费应用| 亚洲欧美国产其他二区| ai欧美亚洲小说| 欧美色网| 激情丁香五月| 久久精品一区二区三区蜜桃臀| 久久精品国产亚洲AV先锋| 亚欧国产无码精品在线| 欧美精品 - 91爱爱| 99re免费| 天天综合青苹果| 欧美少妇性乱| 国产v亚洲v日韩v欧美v片另类| 91丨熟女丨丰满熟女| 日韩熟女精品无码专区一区二区| 青草伊人网| 国内毛片婷婷六月色| 哈哈操电影AV| 国产精品视频91久久| 五月天婷婷久久| 国产午夜福利合集| 天天色综亚洲91污| 人妻丝袜肏逼| 欧美性爱无码一区二区三区| 亚洲日韩青青草色月| 亚洲在饯| 精品四五区| 国产精品播放| 亚洲综合网图| 国语对白露脸XXXXXX| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 亚洲免费精品一区| 亚洲加勒比久久日本道| 亚洲色图久久成人| 国产无码精品久久久久久| 婷婷久久综合| 3PAV乱伦视频| surenchaopeng| 被窝影院午夜看片无码| 色哟哟-国产专区| 老外又粗又长一晚做五次| 偷拍亚洲高清图片| 韩国手机不卡无码三级视频| 国精综合一二三区影视| 波多野结衣被操50分钟免费视频 | av2014 日韩在线中文字幕| 国产激情av女片自拍| 亚洲乱熟女一区二区| 美女黄频a美女大全免费皮| 九九九久| 男人的天堂2018东京热啪啪啪| 日本色日夜干| 超碰 av 女人天堂| 熟女露脸激情自拍视频| 麻豆一区在线| 日韩人成网站在线播放| 青草伊人网| 欧美乱色| 成年人黄色小视频网站| 久久一二三四五六七八九区| 婷婷五月在线视频| 三级精品三级在线观看| 玖玖草久草99蜜月一区二区三区| 女人高潮抽搐喷水视频网站| 亚洲无992tv| 麻豆成人av| 免费毛片在线播放| 欧亚无码视频| 久久久久96| 96精品在线| 成人性爱av| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲日本激情| 九久久九九久视频| 1204金沙人妻懂旧版免费| 熟女突然公开看18禁影片| 久久超碰网| 国产亚洲日本| 91xingse| 性爱av在线免费观看| 亚州久久9| 四虎精品一区| xxx亚洲午夜天堂| 久久久久国产精品片区无码直播| 亚洲天堂久久久久久粉红视频| 久久爽爽精品| 校园春色制服丝袜中文字亚洲| 国产AV色黄看到爽| 国产精品扒开腿做爽爽爽视频| 欧美青青视频| 夜夜高潮夜夜爽高清视频一| 色狠狠色| 日韩av一级黄片| 中文字幕精品免费一区二区| 久久久久99999| 大香蕉日亚洲日本亚大| 草伊人高潮喷水超碰| 日韩精品一二三四| 动漫爆乳3D奶水一区在线观看| 男女日B国产| 亚欧美色| 精品传媒在线一区| 亚洲国产97在线精品一区| 97超碰免费人人性爱| 艳美熟妇先锋一二三区| 人人人人人人少妇| 一级黄色影片| 超碰人人色| 国产女性无套 免费观看| 欧美日韩国产三级黄色| 性久久久| 国产操逼视频在线观看| 成人av福利在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 亚洲精品欧洲色| 激情六月天| 国产成人综合网| 久久精品色欧美aⅴ一区二区| 国产绿奴视频在线观看| 欧美性爱免费短视频| 超碰国产精品无码| 精品国产一区二区三区四区在线看| 84YTCOM性无码| 尤物网站91| 国产区日韩区在线观看| 尤物av网站免费在线播放| 碰碰97| 激情文学88| 天天影视色香欲综合网小说| 国产9 9在线 | 亚洲| 一级成人性爱| 亚洲精品一二区| 伊人网综合在线视频| 亚洲天堂人妻熟妇视频| 亚洲黄网在哪免费看| 熟女突然公开看18禁影片| 97色婷| 天美国产三级传媒| 亚洲美欧999| 老鸭窝黄色视频网站| 91九九九吃| 欧美激情 亚洲色图| 玖玖爱影院| 欧美传媒| 探花一区在线| 老鸭窝亚洲毛片| 中文久久一区| 久久久久96| 91成人无码| 精品国产乱码| 亚洲午夜AV| 黄色二级片网站| 亚洲素人网| 亚洲无码一区成人免费午夜| 尤物av网站免费在线播放| 18禁免费视频| 欧美综合站| 成人黄页| 久一区久久蜜桃| 国产精品成人久久一区二区三区| 亚洲国产成人精品无码专区| 少妇二级| 欧美激情亚洲情色| 日本操逼视频在线| 国产高清成人传媒影视| 国产一区麻豆免费观看| 欧日韩一二三f区| 蜜乳AV免费观看| 色情五月丁香| 亚洲综合九| 精品福利| aaa一级黄片| 96免费视频在线| 四方色播| 精品黑人一区二区| 国产精品欧美激在线| 9精品久久久久| 福利社区午夜一区二区| 九九热九九热| 东京太热男人的天堂久久久| 色嗨嗨在线| 色综合潮| 欧美色图色综合| 亚洲国产日韩欧美熟妇在线| 丰满精品人妻少妇久久字幕| 97亚洲精品| 九九碰九九爱97| 五月天亚洲网| 亚洲国产尤物yw在线观看| 99热97| 91精品91久久久中77777| 91精品无码人妻系列| 97精品国产手机| 日韩免费簧片| 婷婷三区| 日本欧美中文字幕| 蜜桃视频精品一区二区| JuliaAnnXXX888| 人人考人人摸人人干| 污电影在线观看| 95自拍视频在线观看| 射丝袜高跟鞋99| 97亚洲精品| 91色艳| 国产一区二区在线播放| 精品久久久久久亚洲| 欧美丝袜91| 你懂得91| 91精品人妻一品二品三品| 日本一级黄色电影| 超碰97综合在线| 亚洲九区| 天天网综合| 天天肏美女| 人妻少妇久久中文字幕一区二区 麻豆 | 亚洲成人ab| 超碰在线成人| 亚欧洲日韩国产精品| 国产动漫操逼视频| 97视频播放| 欧美一区91大爱| 国产精品熟女一区二区三区| caopeng97| 精品人成视频在线观看| 97 国产一区| 欧美国产精品| 超碰视97中文| 中文字幕在线免费观看视频| 97亚洲色图| 性站| 中文精品一区二去| 福利天天都操| 久久人妻丝袜一区二区三| 日本成人在线不卡一区二区三区 | 99re6国产精品99re| 亚洲熟女中文字幕在线| 亚洲骚逼少妇| 日日干夜夜操视频h| 亚洲蜜乳av| 九九九九九九综合| 啊啊啊啊啊在线观看网址 | 日本免费一区二区不卡| 久久国内| 亚欧美色| 蜜臀久久在线视频| 欧美性爱在线无码| 亚洲中文字幕在现观看| 免费成人在线熟妇网| 天天躁日日躁AAA片李宗瑞| 国产精品另类| 亚洲第一色页夜| JIZZJIZZ国产精品喷水| 丁香九月婷婷| 成人在线午夜视频一区| 日韩美女久久一区二区三区| 加勒比AV天堂| 九九热在线精品视频| 午夜a成v人电影| 亚洲AV永久无码精品成人调教| 蜜桃久久综合视频| 岛国毛片手机在线观看| 亚洲日韩av一区二区三区百合| 国产又大又粗又长视频在线| 日韩激情啪啪| 精品无码一区二区三区色欲| 无码九九| 狠狠图片青青草| 丁香六月婷婷综合| 333kkkk·亚洲com久久| 男女性无套 免费九一| 亚洲午夜蜜臀| 美美91成人国产精品欧美精品久久久久久久 | 国产无码精品久久久久久| 97伊人超碰| 欧美啪啪色吧在线| 久久鲁夜| 色综合中文字幕不卡| chaopen97久久| 成人熟女视频一区二区三区| 人、人、摸,人、人、草| 国产多人在线观看视频| 91高潮| 久久久96精品| 99精品人人爽| 欧美成人色| 天天摸夜夜摸| 一区黄二区黄| 亚洲性综合9| www.夜夜| 99视频在线| 粉嫩绯色AV一区二区在线| 人人看人人爰人人操| 麻豆国产精品午夜视频| 屁股久久久久久| 天天亚洲| 精品传媒在线一区| 97在线视频免费看| 骚货操死你| 清纯唯美综合亚洲| 日韩欧美~中文字| 亚洲97网站| 青青青草原| 日韩欧美久久婷婷网站| 超碰97.com| 亚洲综合有码| 大鸡巴久久| 九九黄色网| 国产夫妻性生活视频| 久操| 久久9免费视频| 超碰在线综合97| 中文字幕日韩情色| 深夜激情| 欧美日本不卡在线| 老鸭窝成人免费毛片视频| 欧美97色| 国产精品ww久久| 中国操逼无码| 日韩免费大片一级播放| 乱伦3P视频| 欧美精品日韩一区二区| 91精品综合久久久久久五月丁香| 婷婷五月天伊人| 九色 人妻 大香蕉| 久草精品国产蜜臀 | 9999伦理视频| 天天综合网AV91| 人人操人人射人人干| 久久99久久99精品天美传媒棢·纸:. | 97日韩欧美亚洲| 天天综合色图| PMv在线观看| 青娱乐国产盛宴视频| 国产超碰人人爽人人做| 涩涩五月天| 91中文精品日韩欧美在线| 欧美色图在线视频少妇| 日本不卡在线二区三区| 人人做天天爱| 婷婷丁香五月综合| 99九九久久| 青青操日韩| 日韩精品资源专区二区| 欧美日韩国内不卡| 精品熟女一区=区三区| 欧美论理片| 午夜精品久久99蜜桃的功能章节| 成人av影院在线观看| 人妻AV在线| 亚洲少妇激情视频| 国产剧情在线| 日韩乱伦视频| 亚洲精品欧洲精品| 亚洲少妇视频| 国产精品嫩草影院免费| 玖玖视频在线资源一区二区三区| 国产成人天堂| 美女好片色日本| 狠色婷婷久久一区二区三区_| 国产污视频麻豆传媒一区二区 | 色999人与兽| 久久久久久91香蕉国产| 亚洲 欧美 天天| 97色97好| 亚洲熟妇A V黑人| 日本一区视频在线观看| 久久天堂婷婷网| 久草精品视频| 一区AV| 日韩在线观看中文字幕视频| 黄呦呦在线| 爱逼综合| 激情九月婷婷| 精品中文一区二区| 国产亚洲深夜激情| 女优免费一区二区永久| 97精品网站| 亚洲欧洲自拍图片专区满春格| 婷婷丁香五月激情啪啪| 国产精品视频在线播放 | 婷婷五月天网| 少妇熟女视频一区二区三区| 370p日韩欧美亚洲精品| 色噜噜国产在线| 色臀AV| 人人扣人人操| 国产AV天美传媒一区二区三区 | 亚洲精品美女久久久久久久久| 人妻酒店出差被中出免费在线播放| 久久久久久久9| 色婷亚洲五月在线观看| 美国三级日本三级久久99| 久久久久久69国产一区二区| 9热9热综合网| 无遮挡男女激烈动态图| 精品超碰中文在线| 欧美色视| 欧美制服另类丝袜| 四虎免费在线观看| 久久人人妻| 国产精品 视频| 日本青青草在线| 亚洲无码精品AV久久久| 亚洲射综合网| 日小BB小视频| 好看的久久不射无码影视影院| 欧美A片中文字幕| 亚洲少妇在线影音| 思思热久久成人| 骚人妻少妇视频| 国产精品岛国片在线观看| 伊人96在线| 欧美一级A片在线看视频性色| 欧美,亚洲,日韩,v,天堂,手机在线观看| 色成人Www精品永久观看| 久久噜| 久久东京国产精品视频| 欧美综合综合| 欧美极品女人的天堂| 熟女探花啪啪| 亚洲91网站| 国产一区二区欧美日本| 夜夜夜夜久久久久| 久久久影院| 天天色黄色影院天天操| 黑人干亚洲| 免费精品99| 亚洲 欧美 精品专区 极品| 97超碰色屌| 十八禁的黄污污免费网站| 男人的天堂三级| 96AV精品| 亚洲精品尤物yw在线影院| 久久成人午夜狠狠| 色五月婷婷麻豆在| 国模私拍一区二区三区神乳| 四虎在线免费视频| 97色伦欧美| a一区二区三区乱码在线| 91网站在线播放| 久久精品一区二区三区不卡| 国产兽交视频在线播放| 国产精品九九| 亚洲天天艹| 在线a v| 中出欧美| 免费草草草草草视频| av天堂影视中文在字幕在线中文 | 色五月69夫妻| 欧美精品日韩一区二区| 无码久久国产| 精品制服美女中文一区二区三区| 热久久91婷婷| 日欧操屄视频| 午夜视频久久久久一区| 日本幼女18+| 性生活无遮挡纯毛片在线看| www.99色| 日韩 欧美 另类 人妻| 日韩熟女精一区二区三区不卡| 久久伊人青青草| 日韩啪啪啪啪啪| 顶级丝袜熟女一区二区三区| 欧美色综合| 亚洲 欧美 日韩另类 麻豆| 97se综合网| 好吊妞转入那个网| AV无码久久久精品| 国产精品第一区第一页| 天天欲望网| 四虎影视永久在线观看精品免费网站 | 啊啊啊啊啊好舒服视频| 超碰在线974| A久久| 国产精点久久久成人| 久艾草在线精品视频在线观看| 97伦综合| 亚洲 无码 有码 中文字幕| 在线 亚洲 网爆 自拍| 天天日天天操心| www欧美性爱| 亚洲少妇综合在线播放| 欧美精品日韩一区二区| 精品美女人人干| 亚洲精品天天影视综合网| 国产99热| 亚洲欧美国产日本一区二区三区| 精品无码一区二区三区| 亚洲高清自拍| 97资源亚洲| 蜜桃网熟妇| 97久久国产亚洲精品超碰热| 欧美亚洲美少妇一区二区| 大香蕉 222| 日韩99神马视频播放片在线播放| 激情婷婷五月天| 久久草在线综合视频| 狠狠色噜噜狠狠狠狠狠色综合久久 | 九九九久久久W精品| 亚洲第一男人天堂| 91天天美女| 综合网亚洲1| 插B在线观看| 天天操熟妇| 色97欧美| 98久久超碰| 91亚州| 粉嫩av在线| 日本αv| 成人无码电影在线观看网| WWW操逼| 久久一区二区高清免费| 不卡一区二区日本视频 | 精品国产乱码久久久久久免费| 久久噜噜噜精品国产亚洲综合| 亚洲男人天堂2| 亚州黄站| 天天综合-91入口| 91狠狠综| 五十路六十路素人熟女| 精品中文字幕第一页| 亚欧无码在线| 大香蕉丝袜一级片| 98色网| 精品十三区| 天天内射| 东京男人天堂| 亚洲97综| 无码操逼网| 99视频内射三四| 亚洲天堂性爱| 好舒服视频| 9I1性色影院| 国产乱伦搜索结果91P| 激情无码日韩| 九月丁香| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 玖玖资源综合在线视频| 91一区二区| 久久综合精品一区二区三区| 97精品在线| 干少妇视频| 中文字幕一区电影在线观看| 九九综合久久| 久久99999| 日韩欧美女求操每天更新| 欧美日韩*字幕一区| 无遮挡猛进视频免费无限观看 | 囯戸精品高潮呻吟旡码| 黄网在线播放| 超碰97玖玖爱| 欧美天堂在线| 日韩一区二区高清在线观看的| 长长久久免费视频| 欧洲精品一二三在线| 好爽免费视频| 你想操日本小逼吗| 国产四虎在线| 亚洲精品97久久中文字幕| 青娱乐999| 色色色五月婷婷| 91网站视频在线观看| 欧美美女视频| 中日韩欧美精品无码AⅤ一区二区| 久久婷婷色综合一区二区三区| 9ⅰ久久久天天| 黄色香蕉视频网站一区| 九月婷婷| 国内外毛片在线观看| 亚洲无线码欧洲精品区别| 国产成人亚洲精品自产在线| 欧洲精品久久| 久久无码一区二区二三区性色| 色播丁香| 久久久少妇诱惑精品视频| 亚洲av国产av综合av卡| 色妹子A V| 欧美日韩亚洲天堂| 一区二区三区精品视频| 91精品婷婷国产综合久久竹菊| 九九碰九九爱97超碰| 九九久久综合| 国产成人精品一区| 6080YYY午夜理论片在线观看| 久久女人视频| 夜夜爽夜夜操| 亚洲无码色| 性感美女91影视| 国产成人精品日本视频| 亚州色图片在线色| 欧美一级A片不卡视频。| 一及黄久一点| 亚洲性爱成人| 亚洲最大的黄色电影网站。| 夜夜精品视频| 久久国产三区| 国产精品熟女一区二区三区| www.婷婷六月天| 婷婷激情四射| 亚洲精品一区中文字幕乱码| 超碰久超碰久| 亚洲综合激情五月久久| 精品一区二区三区18| 亚洲国产日韩欧美熟妇在线| 天堂av最新电影网| 亚洲天堂热| 高清视频一区| 97舔舔| 日韩成年人性爱视频| 九一亚洲国产免费| 欧美性爱综合,免费| 你草精品在线视频| 在线播放一级无码视频 | 欧美日韩国内不卡| 丝袜美腿操av| 乱精品一区字幕二区| 97超碰超碰| 啊啊啊好舒服好爽啊啊啊视频| 超碰性爱97| 超碰色男人操熟女| 伊人一区二区三区| 奇米四色影视777久久久| 噜噜噜亚洲精品| 免费操逼视频下载| 亚洲精品九九九九九九| 日本在线一二| 2024年最新色情网站在线观看| 亚洲欧美性生活| 精品人妻一区二区视频| 俺也射| 天天日天天插| 偷拍偷窥与盗摄视频专区| 国产综合久久久鬼色| 国产精品制服丝袜清纯唯美| 老鸭窝成人| 花野真衣| 黄片视频,下载| 久久精品91| 校园春色综合| 天天谢天天干| 欧美日韩妖精91com| 狠狠躁AV| 约操熟妇| 丰满少妇一区二区三区免费看| 日日夜夜骚| 国产 三级自拍| 日本欧美中文字幕| 在线观看 99热| 偷拍 精品另类 凸凹了四区| 亚洲精品国产日韩无码AV永久免 | 国产精品成人午夜福利| 啊啊啊啊啊啊好湿好爽视频| 午夜高清成人在线视频| 超碰97人人cao| 精品免费成人久久| 国产农村妇女精品一| 日本韩欧美在线播放a| 亚洲本色精品一区二区久久| 一区二区亚州激情久婷婷欧美| 99色悠悠| 日韩中文字幕视频在线观看| 中文字幕精品探花视频| 91精品91久久久久77777| 欧美在线啊啊啊| 婷婷在线播放| 大香蕉专区| 国产无码三级视频在线观看| 日本二区不卡| 大香蕉欧美国产日韩高潮| 碰碰在线视频| 亚洲免费人妻在| 黄色电影在线播放综合网站| 91亚洲欧洲| 中文字幕一二三av| 国产精品丝袜久久亚洲不卡| 啊好大好舒服| 婷色五月| 91丨熟女丨丰满熟女| 亚洲色图尤物视频| 国产色产精品在线观看| 中文字幕黄色一起草| 啊啊啊啊啊啊啊在线| 人妻一区久久二区三区色播| 99国产人成精品| 国产高潮AA片免费看| 在线综合色| 1人人看人人摸人人操| WWW.操逼.COM| 91黑丝在线| 亚洲a色| 欧亚 另类 久| 亚洲交换| 色偷偷超碰亚洲| 久久99草| 中文字幕女同在线| 白丝jkav| 国产盗摄美女如厕大神作品在线观看| 97人肏| 欧美大香蕉卡久久| 日韩在线76| 日韩人妻精品久久久久| 99在线精品观看99| 久热9| 亚洲色久| 亚洲无码色| 99国产人成精品| 日本一本一区二区三区四区五区欧美日韩中文字幕| 亚洲日韩成人性爱视频| 一级A啪啪啪啪| 综合色99| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 影音先锋日本乱伦| 国产人伦精品一区二区三区| 美女尤物福利视频| 欧洲无码一区二区| 97AV爱| 青青草在线视频人人想人人上| 亚洲有薄码区日本系列中文字幕| 超碰三级秋霞| 精品.99999| 99热导航| 学生妹天天看| 99久久免费看精品国产一区| 日日躁夜夜躁狠狠躁超爽| 青青久久艹|