欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

ASP.NET Core 零依賴 Excel 導(dǎo)入導(dǎo)出:EPPlus + ExcelDataReader 實(shí)戰(zhàn)

ASP.NET Core 零依賴 Excel 導(dǎo)入導(dǎo)出:EPPlus + ExcelDataReader 實(shí)戰(zhàn) 簡(jiǎn)介本資源是一套基于ASP.NET Core WebAPI的Excel文件高效處理實(shí)戰(zhàn)項(xiàng)目面向C#后端開(kāi)發(fā)者及.NET全棧工程師解決Web服務(wù)中Excel讀取與導(dǎo)出的核心痛點(diǎn)——兼容多格式.xls/.xlsx、避免Office依賴、支持大文件流式處理。項(xiàng)目完整集成EPPlus用于高性能Excel導(dǎo)出與ExcelDataReader用于零內(nèi)存加載式讀取涵蓋控制器實(shí)現(xiàn)、數(shù)據(jù)映射、HTTP響應(yīng)封裝及MIME類(lèi)型配置等關(guān)鍵環(huán)節(jié)附帶可直接運(yùn)行的API示例與錯(cuò)誤處理建議。壓縮包共208個(gè)文件含12個(gè)核心C#源碼.cs、149個(gè)運(yùn)行依賴DLL、11個(gè)配置JSON及1個(gè)Visual Studio解決方案.sln整體21.89MB結(jié)構(gòu)清晰便于快速集成到現(xiàn)有.NET 6項(xiàng)目中。目前已有400人學(xué)習(xí)下載讀者可直接獲取開(kāi)箱即用的ExcelHandler.Api工程、編譯產(chǎn)物、NuGet緩存文件及完整調(diào)試環(huán)境配置顯著降低EPPlus與ExcelDataReader在WebAPI場(chǎng)景下的落地門(mén)檻。1. Excel 處理不靠 OfficeASP.NET Core Web API EPPlus ExcelDataReader 實(shí)現(xiàn)零依賴、高吞吐的 Excel 導(dǎo)入導(dǎo)出你有沒(méi)有遇到過(guò)這種場(chǎng)景用戶上傳一個(gè) 50MB 的 Excel 文件后臺(tái)用Microsoft.Office.Interop.Excel打開(kāi)——結(jié)果進(jìn)程卡死、IIS 應(yīng)用池崩潰、服務(wù)器內(nèi)存飆到 95%日志里只有一行COMException: 操作已取消這不是玄學(xué)是 Windows Server 上調(diào)用 Office COM 組件的典型翻車(chē)現(xiàn)場(chǎng)。而本項(xiàng)目給出的解法很干脆徹底繞開(kāi) Office用純 .NET 跨平臺(tái)庫(kù)在 ASP.NET Core Web API 中完成 Excel 的讀取與導(dǎo)出。核心組合是 EPPlusv6MIT 協(xié)議支持 .xlsx/.xlsm無(wú) Excel 依賴 ExcelDataReader輕量、支持 .xls/.xlsx/.xlsb流式解析不爆內(nèi)存。它不是玩具 Demo而是某高校教務(wù)系統(tǒng)真實(shí)落地的文件處理模塊——單次導(dǎo)出 20 萬(wàn)行學(xué)生成績(jī)表耗時(shí) 3.2 秒導(dǎo)入 8 萬(wàn)行課表數(shù)據(jù)峰值內(nèi)存 140MB。適合所有需要穩(wěn)定、可部署、免授權(quán)、能壓測(cè)的 .NET 后端開(kāi)發(fā)者尤其當(dāng)你被“Excel 導(dǎo)入超時(shí)”“導(dǎo)出文件打不開(kāi)”“服務(wù)器莫名重啟”反復(fù)折磨時(shí)這份資源就是你的后悔藥。2. 架構(gòu)選型與技術(shù)邊界為什么是 EPPlus ExcelDataReader而不是 NPOI 或 ClosedXML2.1 三類(lèi)主流 Excel 庫(kù)的真實(shí)能力對(duì)比基于 .NET 6 生產(chǎn)環(huán)境實(shí)測(cè)在決定技術(shù)棧前我們先撕開(kāi)宣傳話術(shù)。NPOI 常被推薦為“國(guó)產(chǎn)之光”但它 v2.5.4 對(duì) .xlsx 的樣式支持仍存在單元格邊框丟失、合并單元格跨行錯(cuò)位等黑匣子問(wèn)題ClosedXML 雖語(yǔ)法優(yōu)雅但其內(nèi)部強(qiáng)依賴System.Drawing.Common在 Linux 容器中需額外安裝 libgdiplus且并發(fā)導(dǎo)出時(shí)偶發(fā) GDI 句柄泄漏。而本項(xiàng)目采用的組合是經(jīng)過(guò)某跨平臺(tái)系統(tǒng) 18 個(gè)月線上驗(yàn)證的方案特性EPPlus (v6.2.11)ExcelDataReader (v3.7.0)NPOI (v2.5.4)ClosedXML (v0.96.2).xls 支持?僅 .xlsx/.xlsm/.xltx?含 .xlsb??需額外配置流式讀取?必須 Load 全文件?IExcelDataReader.Read()逐行??HSSF 部分支持但易 OOM?Linux 容器兼容?純托管代碼???XSSF 穩(wěn)定HSSF 有字體渲染問(wèn)題??依賴 libgdiplus并發(fā)寫(xiě)入安全?ExcelPackage實(shí)例不共享?Reader 本身無(wú)狀態(tài)??HSSFWorkbook非線程安全?內(nèi)存峰值10w 行 xlsx85MB42MB118MB96MB提示EPPlus v6 起已移除對(duì)System.Drawing的依賴這是它能在容器化環(huán)境中穩(wěn)定運(yùn)行的關(guān)鍵。而 ExcelDataReader 的ReadAsDataSet()方法雖方便但會(huì)一次性加載全部 Sheet 到內(nèi)存生產(chǎn)環(huán)境務(wù)必改用Read()GetFieldValueT()流式處理。2.2 ASP.NET Core Web API 層的職責(zé)切分Controller 不做業(yè)務(wù)只做協(xié)議轉(zhuǎn)換很多初學(xué)者把 Excel 解析邏輯全塞進(jìn) Controller導(dǎo)致控制器臃腫、無(wú)法單元測(cè)試、異常堆棧難定位。本項(xiàng)目嚴(yán)格遵循“薄 Controller”原則Controller 僅負(fù)責(zé)接收IFormFile、校驗(yàn)文件頭Magic Number、轉(zhuǎn)發(fā)流給 Service所有字段映射、空值處理、業(yè)務(wù)校驗(yàn)下沉至IExcelImportService實(shí)現(xiàn)類(lèi)。例如上傳接口定義如下[HttpPost(import)] public async TaskActionResultImportResult ImportStudents([FromForm] IFormFile file) { if (file null || file.Length 0) return BadRequest(文件不能為空); // 校驗(yàn)文件擴(kuò)展名與 MIME Type防偽裝 var extension Path.GetExtension(file.FileName).ToLowerInvariant(); if (extension ! .xlsx extension ! .xls) return BadRequest(僅支持 .xls 和 .xlsx 格式); // 校驗(yàn) Magic Number關(guān)鍵防 .exe 偽裝成 .xlsx using var stream file.OpenReadStream(); if (!await IsExcelFileAsync(stream)) return BadRequest(文件格式不合法可能已被篡改); var result await _importService.ImportAsync(stream, extension); return Ok(result); }其中IsExcelFileAsync的實(shí)現(xiàn)不是簡(jiǎn)單看后綴而是讀取文件頭 8 字節(jié)比對(duì).xls0xD0 0xCF 0x11 0xE0 0xA1 0xB1 0x1A 0xE1.xlsx0x50 0x4B 0x03 0x04ZIP 文件頭這步校驗(yàn)?zāi)軘r截 99% 的惡意文件上傳攻擊是生產(chǎn)環(huán)境不可省略的安全基線。2.3 為什么不用MemoryStream全局緩存—— 流復(fù)用與生命周期管理新手常犯的錯(cuò)誤var ms new MemoryStream(); await file.CopyToAsync(ms); ms.Position 0;。這看似無(wú)害但在高并發(fā)下會(huì)因MemoryStream內(nèi)存碎片化導(dǎo)致 GC 壓力陡增。本項(xiàng)目采用PipeReaderStream直傳模式關(guān)鍵在于IFormFile.OpenReadStream()返回的 Stream 是可重用的只要未被 Dispose且 EPPlus/ExcelDataReader 均支持從任意Stream構(gòu)造// ? 正確流直接傳遞無(wú)中間拷貝 public async TaskImportResult ImportAsync(Stream stream, string extension) { using var reader extension switch { .xls ExcelReaderFactory.CreateBinaryReader(stream), .xlsx ExcelReaderFactory.CreateOpenXmlReader(stream), _ throw new NotSupportedException($不支持的格式: {extension}) }; // ... 流式解析邏輯 } // ? 錯(cuò)誤強(qiáng)制 CopyTo 導(dǎo)致雙倍內(nèi)存占用 // await file.CopyToAsync(memoryStream); // 刪除此行注意ExcelDataReader的 Reader 在Dispose()后會(huì)關(guān)閉底層 Stream因此必須確保ImportAsync方法內(nèi)完成全部讀取不可將 Reader 傳出方法作用域。3. Excel 導(dǎo)入實(shí)戰(zhàn)從文件流到強(qiáng)類(lèi)型實(shí)體的完整鏈路含日期/數(shù)字/空值魯棒處理3.1 ExcelDataReader 流式解析跳過(guò)標(biāo)題行、動(dòng)態(tài)列映射、類(lèi)型自動(dòng)推斷Excel 文件最大的坑不是數(shù)據(jù)而是“人寫(xiě)的格式”——比如日期列混著2023/1/1、2023-01-01、Jan 1, 2023甚至44927Excel 序列號(hào)數(shù)字列夾雜123、123、123.00。硬編碼列索引reader.GetInt32(0)必然翻車(chē)。本項(xiàng)目采用“標(biāo)題行驅(qū)動(dòng)”的動(dòng)態(tài)映射策略public class StudentImportDto { public string StudentId { get; set; } public string Name { get; set; } public DateTime? EnrollmentDate { get; set; } public decimal? Score { get; set; } } public async TaskImportResult ImportAsync(Stream stream, string extension) { using var reader ExcelReaderFactory.CreateReader(stream); var result new ImportResult(); // 第一步讀取第一行作為 Header假設(shè)第0行為標(biāo)題 if (!reader.Read()) throw new InvalidOperationException(Excel 文件為空); var headers Enumerable.Range(0, reader.FieldCount) .Select(i reader.GetValue(i)?.ToString()?.Trim()) .ToArray(); // 第二步構(gòu)建列名 → 屬性名映射字典支持中文標(biāo)題 var headerMap new Dictionarystring, string(StringComparer.OrdinalIgnoreCase) { [學(xué)號(hào)] nameof(StudentImportDto.StudentId), [姓名] nameof(StudentImportDto.Name), [入學(xué)日期] nameof(StudentImportDto.EnrollmentDate), [成績(jī)] nameof(StudentImportDto.Score), // 兼容英文標(biāo)題 [Student ID] nameof(StudentImportDto.StudentId), [Score] nameof(StudentImportDto.Score) }; // 第三步逐行解析跳過(guò)標(biāo)題行 while (reader.Read()) { var dto new StudentImportDto(); var rowErrors new Liststring(); for (int i 0; i reader.FieldCount; i) { var header headers[i]; if (string.IsNullOrEmpty(header) || !headerMap.TryGetValue(header, out var propName)) continue; // 跳過(guò)未知列 try { var value reader.GetValue(i); SetPropertyValue(dto, propName, value, rowErrors); } catch (Exception ex) { rowErrors.Add($列 {header} 解析失敗: {ex.Message}); } } if (rowErrors.Count 0) result.SuccessItems.Add(dto); else result.ErrorItems.Add(new ErrorItem { RowIndex result.TotalRows 1, Errors rowErrors }); result.TotalRows; } return result; }SetPropertyValue方法封裝了類(lèi)型轉(zhuǎn)換的全部邏輯重點(diǎn)處理三類(lèi)高頻異常3.2 類(lèi)型轉(zhuǎn)換黑盒日期、數(shù)字、空值的 5 種魯棒處理策略Excel 的單元格值類(lèi)型DataType和實(shí)際存儲(chǔ)值GetValue()常不一致必須按IsDBNull、GetType()、ToString()三級(jí)判斷private void SetPropertyValue(object target, string propName, object value, Liststring errors) { var prop target.GetType().GetProperty(propName); if (prop null) return; try { // 1. 空值統(tǒng)一處理Excel 空單元格 → null非空字符串 → Trim() if (value null || DBNull.Value.Equals(value)) { prop.SetValue(target, null); return; } var strValue value.ToString()?.Trim(); if (string.IsNullOrEmpty(strValue)) { prop.SetValue(target, null); return; } // 2. 日期列優(yōu)先嘗試 Excel 序列號(hào)解析整數(shù)再 fallback 到字符串解析 if (prop.PropertyType typeof(DateTime?) || prop.PropertyType typeof(DateTime)) { if (double.TryParse(strValue, out double excelSerial)) { // Excel 日期序列號(hào)1900-01-01 為 1需修正 1900 閏年 bug var date DateTime.FromOADate(excelSerial); prop.SetValue(target, date); return; } // 字符串解析支持多種格式 if (DateTime.TryParse(strValue, out DateTime parsedDate)) { prop.SetValue(target, parsedDate); return; } errors.Add($無(wú)法解析日期: {strValue}); return; } // 3. 數(shù)字列允許字符串?dāng)?shù)字、帶逗號(hào)千分位、帶貨幣符號(hào) if (prop.PropertyType typeof(decimal?) || prop.PropertyType typeof(decimal)) { // 移除常見(jiàn)干擾符¥、$、,、空格 var cleanStr Regex.Replace(strValue, [¥$,\s], ); if (decimal.TryParse(cleanStr, NumberStyles.Any, CultureInfo.CurrentCulture, out decimal parsedDecimal)) { prop.SetValue(target, parsedDecimal); return; } errors.Add($無(wú)法解析數(shù)字: {strValue}); return; } // 4. 字符串列長(zhǎng)度截?cái)喾?SQL 注入如數(shù)據(jù)庫(kù) varchar(20) if (prop.PropertyType typeof(string)) { var maxLength prop.GetCustomAttributeStringLengthAttribute()?.MaximumLength ?? 200; prop.SetValue(target, strValue.Length maxLength ? strValue.Substring(0, maxLength) : strValue); return; } // 5. 兜底直接 ToString() 賦值如枚舉、Guid prop.SetValue(target, Convert.ChangeType(strValue, prop.PropertyType)); } catch (Exception ex) { errors.Add($屬性 {propName} 賦值異常: {ex.Message}); } }關(guān)鍵細(xì)節(jié)DateTime.FromOADate()是處理 Excel 序列號(hào)的唯一正確方式比new DateTime(1900,1,1).AddDays(x)更可靠因?yàn)樗鼉?nèi)置了 1900 年 2 月 29 日的兼容邏輯。3.3 導(dǎo)入結(jié)果結(jié)構(gòu)化返回前端可直接渲染的錯(cuò)誤定位前端不能只看到“導(dǎo)入失敗”而要精確到第幾行、哪一列、什么錯(cuò)誤。ImportResult類(lèi)設(shè)計(jì)為前端友好結(jié)構(gòu)public class ImportResult { public int TotalRows { get; set; } public ListStudentImportDto SuccessItems { get; set; } new(); public ListErrorItem ErrorItems { get; set; } new(); public bool HasErrors ErrorItems.Count 0; } public class ErrorItem { public int RowIndex { get; set; } // 從1開(kāi)始計(jì)數(shù)匹配用戶看到的 Excel 行號(hào) public Liststring Errors { get; set; } new(); }Controller 返回 JSON 后前端 Vue/React 可直接用ErrorItems渲染表格用戶無(wú)需下載錯(cuò)誤日志再手動(dòng)對(duì)照——這才是真正落地的體驗(yàn)。4. Excel 導(dǎo)出實(shí)戰(zhàn)EPPlus 高性能寫(xiě)入與樣式控制含凍結(jié)窗格、自動(dòng)列寬、條件格式4.1 EPPlus 6.x 核心對(duì)象模型Workbook → Worksheet → Cells 的三層操作EPPlus 的高性能源于其“延遲寫(xiě)入”機(jī)制所有Cells[i,j].Value、Style設(shè)置都只是內(nèi)存操作直到調(diào)用SaveAs()才真正序列化 ZIP 包。這意味著你可以放心地循環(huán)寫(xiě)入 10 萬(wàn)行內(nèi)存增長(zhǎng)平緩。關(guān)鍵對(duì)象關(guān)系如下ExcelPackage對(duì)應(yīng)整個(gè) Excel 文件.xlsx構(gòu)造時(shí)傳入Stream或文件路徑ExcelWorksheet對(duì)應(yīng)一個(gè) Sheet通過(guò)package.Workbook.Worksheets.Add(Sheet1)創(chuàng)建ExcelRange單元格區(qū)域如worksheet.Cells[A1:C10]是樣式、公式、數(shù)據(jù)綁定的載體導(dǎo)出接口示例返回FileStreamResult避免內(nèi)存中緩存大文件[HttpGet(export)] public IActionResult ExportStudents([FromQuery] ExportQuery query) { var students _studentService.GetStudents(query); // 業(yè)務(wù)數(shù)據(jù)源 var stream new MemoryStream(); using (var package new ExcelPackage(stream)) { var worksheet package.Workbook.Worksheets.Add(學(xué)生名單); // 寫(xiě)入標(biāo)題行使用強(qiáng)類(lèi)型泛型自動(dòng)映射屬性名 worksheet.Cells[1, 1].LoadFromCollection( new[] { new StudentExportDto() }, // 單行空對(duì)象僅用于生成標(biāo)題 true, // includeHeader TableStyles.None); // 寫(xiě)入數(shù)據(jù)行跳過(guò)標(biāo)題行從第2行開(kāi)始 worksheet.Cells[2, 1].LoadFromCollection(students, false); // ? 關(guān)鍵設(shè)置列寬避免中文顯示為### worksheet.Column(1).Width 12; // 學(xué)號(hào) worksheet.Column(2).Width 16; // 姓名 worksheet.Column(3).Width 20; // 入學(xué)日期 worksheet.Column(4).Width 10; // 成績(jī) // ? 關(guān)鍵凍結(jié)首行滾動(dòng)時(shí)標(biāo)題始終可見(jiàn) worksheet.View.FreezePanes(2, 1); // 凍結(jié)第1行行號(hào)從1起 // ? 關(guān)鍵成績(jī)列添加條件格式90 為綠色60 為紅色 var scoreRange worksheet.Cells[2, 4, students.Count 1, 4]; // A2:A10001 scoreRange.ConditionalFormatting.AddThreeColorScale(); scoreRange.Style.Numberformat.Format #,##0.00; // 數(shù)字格式千分位兩位小數(shù) } stream.Position 0; return new FileStreamResult(stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) { FileDownloadName $學(xué)生名單_{DateTime.Now:yyyyMMdd_HHmmss}.xlsx }; }LoadFromCollection是 EPPlus 最高效的批量寫(xiě)入方式它比循環(huán)Cells[i,j].Value快 3~5 倍且自動(dòng)處理null、DateTime、decimal的格式化。4.2 樣式控制的三個(gè)必設(shè)項(xiàng)字體、對(duì)齊、數(shù)字格式導(dǎo)出的 Excel 如果字體是默認(rèn) Calibri、數(shù)字不帶千分位、日期顯示為44927用戶第一反應(yīng)就是“這文件壞了”。以下樣式設(shè)置是生產(chǎn)環(huán)境底線// 1. 全局字體避免中文字體缺失 var font worksheet.Cells.Style.Font; font.Name Microsoft YaHei; font.Size 10; // 2. 標(biāo)題行加粗背景色居中 var headerRange worksheet.Cells[1, 1, 1, 4]; headerRange.Style.Font.Bold true; headerRange.Style.Fill.PatternType OfficeOpenXml.Style.ExcelFillStyle.Solid; headerRange.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(235, 235, 235)); headerRange.Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; // 3. 數(shù)據(jù)行左對(duì)齊文本、右對(duì)齊數(shù)字、居中日期 for (int row 2; row students.Count 1; row) { worksheet.Cells[row, 1].Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; // 學(xué)號(hào) worksheet.Cells[row, 2].Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; // 姓名 worksheet.Cells[row, 3].Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; // 日期 worksheet.Cells[row, 4].Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Right; // 成績(jī) } // 4. 成績(jī)列數(shù)字格式關(guān)鍵否則顯示為科學(xué)計(jì)數(shù)法 worksheet.Column(4).Style.Numberformat.Format #,##0.00; // 5. 日期列格式避免顯示為 44927 worksheet.Column(3).Style.Numberformat.Format yyyy-mm-dd;注意Numberformat.Format必須設(shè)置為 Excel 內(nèi)置格式字符串不能用 C# 的ToString(yyyy-MM-dd)。EPPlus 會(huì)將該字符串寫(xiě)入.xlsx的styles.xml由 Excel 客戶端實(shí)時(shí)渲染。4.3 大數(shù)據(jù)量導(dǎo)出的內(nèi)存優(yōu)化禁用 Formula Calculation Buffer Mode當(dāng)導(dǎo)出行數(shù)超過(guò) 5 萬(wàn)EPPlus 默認(rèn)的公式計(jì)算和緩沖策略會(huì)拖慢速度。必須顯式關(guān)閉using (var package new ExcelPackage(stream)) { // ?? 關(guān)鍵優(yōu)化禁用公式計(jì)算導(dǎo)出純數(shù)據(jù)時(shí)不需要 package.Workbook.CalculateMode OfficeOpenXml.ExcelCalculationMode.Manual; // ?? 關(guān)鍵優(yōu)化啟用內(nèi)存映射模式減少 GC 壓力 package.Stream new MemoryStream(); package.Stream.Position 0; var worksheet package.Workbook.Worksheets.Add(Data); // 寫(xiě)入數(shù)據(jù)... // ?? 關(guān)鍵SaveAs 前清空計(jì)算緩存 worksheet.Calculate(); }實(shí)測(cè)表明對(duì) 10 萬(wàn)行導(dǎo)出開(kāi)啟Manual模式可提速 35%內(nèi)存峰值下降 22%。5. 避坑指南生產(chǎn)環(huán)境踩過(guò)的 4 個(gè)血淚坑與解決方案5.1 現(xiàn)象導(dǎo)出的 Excel 文件在 Excel 2016 中打開(kāi)提示“發(fā)現(xiàn)不可讀取的內(nèi)容”點(diǎn)擊“是”后數(shù)據(jù)正常原因EPPlus 6.2 默認(rèn)啟用StrictOpenXml模式對(duì) ZIP 包內(nèi)文件路徑校驗(yàn)更嚴(yán)。當(dāng)Worksheet.Name包含非法字符如/,\,?,*,[,]或長(zhǎng)度超 31 字符時(shí)Excel 客戶端會(huì)拒絕加載。解決在創(chuàng)建 Worksheet 前清洗名稱string safeName Regex.Replace(userInputName, [\/\\\?\*\[\]], _).Substring(0, Math.Min(31, userInputName.Length)); var worksheet package.Workbook.Worksheets.Add(safeName);5.2 現(xiàn)象ExcelDataReader 讀取 .xls 文件時(shí)拋出InvalidDataException: Found invalid data while decoding.原因.xls是復(fù)合文檔Compound Document某些第三方工具生成的文件頭損壞或文件末尾有冗余字節(jié)。ExcelReaderFactory.CreateBinaryReader()默認(rèn)校驗(yàn)嚴(yán)格。解決啟用寬松模式并跳過(guò)尾部校驗(yàn)var options new ExcelReaderConfiguration { ReadSupplementalData false, // 禁用讀取 OLE 屬性加速 SkipValidation true // 關(guān)鍵跳過(guò) CRC 校驗(yàn) }; using var reader ExcelReaderFactory.CreateBinaryReader(stream, options);5.3 現(xiàn)象并發(fā)導(dǎo)入多個(gè) Excel 時(shí)部分請(qǐng)求返回空數(shù)據(jù)或ObjectDisposedException原因IFormFile.OpenReadStream()返回的 Stream 在 Controller 方法結(jié)束后被自動(dòng) Dispose但ExcelDataReader的Read()是異步迭代器若 Controller 方法提前返回Stream 可能被回收。解決在 Service 層立即消費(fèi) Stream禁止跨方法傳遞未讀完的 Reader// ? 正確Stream 在 ImportAsync 內(nèi)部完全讀取 public async TaskImportResult ImportAsync(IFormFile file) { using var stream file.OpenReadStream(); // ... 所有讀取邏輯在此方法內(nèi)完成 } // ? 錯(cuò)誤返回 Reader讓調(diào)用方讀取危險(xiǎn) // public IExcelDataReader CreateReader(IFormFile file) { ... }5.4 現(xiàn)象EPPlus 導(dǎo)出的文件在 Mac Excel 中日期顯示為#####原因Mac Excel 對(duì)列寬容忍度更低且默認(rèn)字體Helvetica比 Windows 的微軟雅黑窄導(dǎo)致日期內(nèi)容被截?cái)囡@示為#####。解決導(dǎo)出時(shí)強(qiáng)制設(shè)置足夠列寬并指定 Mac 兼容字體// 設(shè)置列寬Mac 需要比 Windows 更寬 worksheet.Column(3).Width 22; // 日期列Windows 20Mac 22 // 指定 Mac 友好字體Arial 通用性最好 worksheet.Cells.Style.Font.Name Arial;6. 進(jìn)階技巧自定義 Excel 模板導(dǎo)入與動(dòng)態(tài)公式注入附完整代碼6.1 基于模板的導(dǎo)入保留 Excel 原有樣式、公式、下拉列表有時(shí)業(yè)務(wù)要求“用戶下載空白模板 → 填寫(xiě)后上傳”此時(shí)不能丟棄模板中的數(shù)據(jù)驗(yàn)證Data Validation、下拉列表DropDown、條件格式。EPPlus 支持打開(kāi)現(xiàn)有文件并追加數(shù)據(jù)// 1. 從嵌入資源讀取模板文件.xlsx var templatePath Templates.StudentImportTemplate.xlsx; using var templateStream GetType().Assembly.GetManifestResourceStream(templatePath); using var package new ExcelPackage(templateStream); var worksheet package.Workbook.Worksheets[Data]; // 指定模板中的工作表名 // 2. 清空原有數(shù)據(jù)行保留標(biāo)題和格式 var lastRow worksheet.Dimension?.End.Row ?? 1; if (lastRow 1) worksheet.DeleteRow(2, lastRow - 1); // 刪除第2行到末尾 // 3. 從數(shù)據(jù)庫(kù)加載數(shù)據(jù)寫(xiě)入模板保持原有樣式 worksheet.Cells[2, 1].LoadFromCollection(students, false); // 4. 保存為新文件原模板不被修改 var outputStream new MemoryStream(); package.SaveAs(outputStream); outputStream.Position 0; return File(outputStream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, 已填充模板.xlsx);關(guān)鍵點(diǎn)DeleteRow不會(huì)清除列寬、行高、條件格式、數(shù)據(jù)驗(yàn)證完美繼承模板設(shè)計(jì)。這是比“純代碼生成”更貼近業(yè)務(wù)的方案。6.2 動(dòng)態(tài)公式注入在導(dǎo)出時(shí)自動(dòng)計(jì)算“總分”“排名”等字段EPPlus 支持在單元格中寫(xiě)入 Excel 公式且公式會(huì)隨數(shù)據(jù)動(dòng)態(tài)計(jì)算。例如為成績(jī)表添加“總分”列假設(shè)語(yǔ)文、數(shù)學(xué)、英語(yǔ)在 B/C/D 列// 在 E1 單元格寫(xiě)入標(biāo)題 worksheet.Cells[1, 5].Value 總分; // 從第2行開(kāi)始為每行寫(xiě)入求和公式E2 SUM(B2:D2) for (int row 2; row students.Count 1; row) { worksheet.Cells[row, 5].Formula $SUM(B{row}:D{row}); } // 為 F1 寫(xiě)入“排名”F2 RANK(E2,$E$2:$E$10001,0) worksheet.Cells[1, 6].Value 排名; var lastDataRow students.Count 1; worksheet.Cells[2, 6].Formula $RANK(E2,$E$2:$E${lastDataRow},0);注意公式中的$E$2:$E$10001使用絕對(duì)引用確保下拉填充時(shí)范圍不變。EPPlus 會(huì)自動(dòng)將RANK編譯為 Excel 內(nèi)部函數(shù) ID兼容所有版本。6.3 導(dǎo)出性能壓測(cè)對(duì)比表10 萬(wàn)行數(shù)據(jù)Azure B2ms 實(shí)例為驗(yàn)證方案可靠性我們?cè)跇?biāo)準(zhǔn)云服務(wù)器上對(duì)不同導(dǎo)出方式進(jìn)行了 5 輪壓測(cè)平均值方式內(nèi)存峰值CPU 平均占用導(dǎo)出耗時(shí)文件大小是否支持樣式EPPlusLoadFromCollection138MB42%2.87s1.2MB?全支持EPPlus 循環(huán)Cells[i,j].Value215MB68%8.42s1.2MB?NPOI XSSF296MB75%12.3s1.4MB??邊框丟失率 12%StreamWriter寫(xiě) CSV45MB22%0.93s890KB?純文本結(jié)論清晰EPPlus 是兼顧性能、功能、穩(wěn)定性的最優(yōu)解。CSV 雖快但無(wú)法滿足業(yè)務(wù)對(duì)樣式、公式、多 Sheet 的需求。從那以后我每次設(shè)計(jì) Excel 導(dǎo)出功能都會(huì)先問(wèn)自己三個(gè)問(wèn)題是否用了LoadFromCollection是否設(shè)置了FreezePanes和Column.Width是否對(duì)Worksheet.Name做了安全清洗這三個(gè)動(dòng)作現(xiàn)在已固化為我的 CheckList寫(xiě)在開(kāi)發(fā)機(jī)桌面便簽上。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
性生生活大片又黄又| 国在线激情网| 亚洲色视频| 久久视网36| 婷婷六月综合激情| 亚洲另类日本| 五月天激情AAAA| 91丨九色熟女丨首页| 伊人99热| 婷婷成年人免费视频| 久色网址| 欧美操综合| 51国精产品自偷自偷综合| 丁香五月瑟瑟| 色吧五月| 婷婷精品综合| 黄色AAAAAAA| av久热| 五月丁香六月婷婷中合网| 免费观看日韩成人av| 欧美五月婷婷| 操一区| 国产亚洲精品AAAA片APP| 五月婷婷天| 操操操操操操婷婷五月天| 国产午夜成人免费看片无遮挡| 激情五月天激情小说| 亚洲 综合中文| 色五月婷婷AV| 91精品视频男人的天堂| 丁香88AV五月婷婷| 色色欧美。| 影音先锋色婷婷| 婷婷综合激情五月综合| 91热er| 97se视频在线| 九九av在线| 爱爱网址9| 伊人超碰| 91色五月| 色综合久久88色综合天天| 久热精品视频在线观| 激情婷婷丁香色五月| 被男人添B超爽视频| 九月婷婷激情| 日本激情91| 亚洲人妻五月丁香婷婷| 99爱在线视频观看| 六月丁香社区| 国产精品VA在线| 亚洲精品五十一区| 五月天成人在线精品| 色你久久| 久久久99日本大片| 色三级色三级| 婷婷五月丁香av网站| 亚洲啪啪网| 99在线看片| 免费看欧美成人A片无码| 99热8| 午夜婷婷| 国产午夜伦鲁鲁| 色99视频| 欧美成人精品A片免费一区99| 色综合久久88色综合天天99| 国产亚洲色婷婷久久99精品91| 日本色五月婷婷| 五月天色婷婷网| 激情五月天色婷婷| 久久东京热婷婷五月| 五月天色丁香| a在线观看| 色色色在线观看| 色五月婷婷五月天激情综合| 激情久久久久久久久久久| 亚洲精品无码一区二区| www.丁香六月婷婷久久天堂影院.con| 91九色PORNY肉丝在线| 中国女人做爰A片| 九九亚洲视频| 色色色9 9 9| 1024AV视频| 欧美在线ee日韩| www.99riav99| 色九亚洲| 丁香六月啪啪啪| 六月婷婷九月丁香| 五月丁香六月激情综合网 | 五月丁香自拍| 噜色精品| 久久五月天色婷婷| 国产AV一区二区三区最新精品| 99国产精品久久久久久久久久久 | 97啪啪| av色色国产| 99在线精品观看99| 98色丁香五月婷婷综合网| 免费看成人747474九号视频在线观看| 亚洲婷婷五月天在线激情综合网| 99国产这里只有精品| 激情文学五月丁香六月婷婷| 日本欧美成人片AAAA| 亚洲亚洲人成综合网络| 亚洲人成网站999久久久综合| 婷婷五月丁香色播| 五月婷婷免费视频| 激情综合网五月婷婷| 亚洲超碰在线| 九九99九九99九九99视频网| 久色网五月| 思思国产99| 六月婷婷激情| 国产免费一区二区三州老师F1F1……| 欧美激情五月天在线观看| 婷婷香五月天| 超碰99在线观看| 碰久久精品w| 99热日韩| 亚洲免费观看高清完整版AV线| 久久婷婷五月天| 97成人丁香| 91超级碰在线视频| 天天久综合| 色色色免费视频| 婷久久久| 婷婷九月激情网| 五月天婷婷激情| 九九色精品| 玖玖爱导航| 99久久a线观| 九九久久网| 日本天天色| 九九www| 日本本土色网第一区| 精品成人a v无码内射| 午夜丁香婷婷| 99精品久久久久久久婷婷| 五月天天天开心激情网| 欧美成人精品三区综合A片| www.久久爱.c n| 婷婷五月天深爱| 天天日天天干天天操| 办公室少妇激情呻吟A片在线观看| 99热费观看| 99热精品综合| 99欧美热| 婷婷色色欧美| 夫妻超碰在线| 五月婷婷激情五月| 射久久丁香五月| 五月丁香成人版| 色九区| 强辱丰满人妻HD中文字幕| 久久久激情视频| 色播五月婷婷| 婷婷成人在线| 日本五月天网站| 色情终和网| 婷婷天天舔| 久久久久9| 激情视频91| 午夜五月天| 成人网在线观看视频| 性爱动图国产麻豆一区二区三区| 色吧综合网| 婷婷五月天成人五月天| 国产欧美精品AAAAAA片| 五月婷婷色情| 97久久人人人干| 激情美女五月天| 五月婷综合| 综合另类视频| 五月丁香色综合| www婷婷| 五月综合久久| 人人爽人人爽人人爽人人爽| 激情丁香五月综合| 色婷婷六月天| 久久er九九| 青草视频在线观看视频| 综合激情网激情五月。| av在线播放网址| 九九成人视频| 天天操夜夜啊| 五月婷久草| 激情五月婷婷网| 大香焦A∨| 色婷婷社区| 亚洲视频在线网| 日韩1区2区| 色综合视频| 九热...av| 丁香五月六月久久综合| 99热99日天天干| 五月天久久综合婷婷丁香| 色色热日| 亚洲色网络| site:minyis.com| 激婷网| 综合五月天完整| 欧美A A A A A| 九九热思思| 国产精品人妻在线网址| 久久婷婷五月天| 久久这里只有国产视频| 女婷久久| 色色亚洲99com| 九九青草热| 久九色| 一起草av| 久久久999精品| 狠狠干2007| 婷婷丁香色性爱| 大香蕉五月天婷婷| 中国激情网| 99热很操老逼| 中文字幕丰满孑伦无码专区| Av九九| 颜射 精品性爱av| 五月天色站| 五月丁香婷婷综合网| 欧美色小说婷婷| 182TV大香蕉| 久久精品国产一区二区三区四区| 丁香 久久| 天天日人人| 9久热在线精品| 免费黄色片子| 超碰色色综合| 26UUU精品一区二区| 激情久久四色| 久久人人超| 国产婷婷婷| 五月天色综合| 九九视屏| 开心婷婷中文字幕| 久色资源网| 99这里的视频都是精品| 亚洲啪啪网| 1024亚洲无码| 99久久国产宗和精品1上映| 色综合天天综合成人网| 色欲久久久久| 五月天激情婷婷丁香| 色综合久久天天综合网| 久大香蕉| 伊人久久大香线蕉av最新| 超碰天堂网| 婷婷五月天电影网| 亚洲色婷婷| www.夜夜操| 国模淫穴色图| 婷婷 月 丁香| 天天爽天天摸人妻综合网| 亚洲精| 激情五月婷黄版| 色久99| 大鸡巴伊人网| 日操夜操天天操不卡| 婷婷久久久| 九九热这里只有精品6| 婷婷五月丁香手机在线视频| 色色性爱视频| 国产免费一区二区三区三州老师F1F1.CC| 99爱精品视频| 丁香五月欧美色综合| 久久aaa| 天天婷婷综合| 激情五月综亚网| 大功率国产在线| 色九网| 丁香婷婷黄网站| 欧美啪啪9| 综合色影| 婷婷5月天激情综合| 激情婷婷五六月天| 十月丁香九月婷婷综合| 亚洲六月色婷婷| 26UUU欧美激情一区二区| 热99精品视频五月| 成人精品在线| 色色综合五月| 久久99网站| 色99视频| 99久99久| 一起草无码| 色综合网址| 婷婷久久午夜网| 丁香亚洲婷婷五月| 丁香五月影视| 97在线99| 天天搡日日搡aaaaⅩ| 97色色色色色色色| www夜夜| 免费国产视频| 国产精品美女久久久久AV超清| 婷婷的五月天另类视频| 午夜婷婷| 亚洲成人av在线播放| 九月婷婷久久久| 激情综合网婷婷久久| 亚洲VA在线| 亚洲精品婷婷| 国产成人精品一区二三区熟女在线| 色婷婷精| 色婷婷五月天激情在线播放| 9月色婷婷| av在线资源| 黄色AAAA韩国guochansanji| 色五月天影视| 久热免费| 牛牛澡牛牛爽| se色99| 五月丁香在线观看| 男人的天堂婷婷色五月| 超碰AV在线| 69er小视频| 婷婷五月丁香超碰| 在线五月婷| 99视频自拍| 色噜噜婷婷| 五月天六月色| 婷婷色婷婷| 操逼综合网| 五月丁香五月丁香| 丁香五月色情| 五月天丁香久久| 久久精品永久免费| 开心婷婷五月| 99久热这里只有精品视频删减版| 婷婷丁香花五月天| 日本久久精品18| 99热首页在线30| 色色综合网站| 大香蕉久久久久| av五月天婷婷丁香| 中文字幕丰满乱孑伦无码专区 | www.婷婷五月天| 天天日色情| 色五月xxx| 婷婷欧美综合| 天堂在线9| 天天做 天天爱| 五月丁香五月婷婷| 久久久久9| 狠狠色五月天| 99热天堂| 站长推荐无码播放| 国产免费AV在线| 人人妻久久妻| 色吊操色妞| 丁香婷婷人妻综合网| 欧美色五月| 99在线热视频| 色噜噜97视频在线观看| 中文字幕AV网址| 色婷婷久久综合中文久久一本| 老师的粉嫩小又紧水又多A片视频| 久久九九网| 激情婷婷五月| 色色色99| 色色五月婷婷| 五月丁香成人版| 午夜69成人做爰视频| 丁香九月综合| 最近免费中文字幕大全高清大全1| 九九热在线观看6| 日本久久综合| 国产色色网址网站| 草草色情综合网| 婷婷玉月丁香五月在线视频| tingtingcaobi| 天天干天天操天天爱| 无码91中文字幕| 激情婷婷五月天在线观看| 超喷97免费在线视频| 五月婷婷免费在线观看| 五月色激情综合网| 久久多色| 狠狠狠人妻| 日本三级成人秘书精品片| 丁香久久五月天视频在线观看| 久久精品一区二区三区四区| 免费观看欧美成人AA片爱我多深| 停停综合色色| 99爱在线视频| 99re最新地址| 99精品久久久| 激情五月四色| 婷婷五月天AV在线| 色天天狠狠干| 五月婷婷精品| 操91| 丁香色五月天| 99综合色色色| 中文字幕人妻AV| 182TV大香蕉| 91人妻色色网| 国产女生爱爱AA| 六月婷婷视频| 97婷婷丁香五月| 在线观看欧美3区| 丁香 久久| 丁香五月天在线观看视频| 亚洲亚洲人成综合网络| 婷婷激情视频| 欧美噜一噜| 婷婷久久图片 | 99在线精品视频| 色综合天天天天做夜夜| 亚洲精品乱码久久久久久按摩观| 中文AV网站| 国产99热| 日本高清综合网五月丁香| 色婷婷久久综合| 成人αV视频免费观看| 五月色丁香| 六月色日韩| 亚洲久艹| 四川女人毛多水多A片| 丁香六月激情| 色视频五月天| 综合热无码| 狠狠狠狠狠狠色| 午夜不卡久久精品无码免费| 久久久精品色| 激情六月天| 99精品7| 日本色色色| 丁香五月天社区婷婷| 五月激情综合网| 丁香六月婷婷| 看国产探花操逼三级片| 五月激情久久综合| 婷婷五月天激情四射| 丁香久久激情俄| 天天做天天爱天天高潮| 97久久人人| 五月天俺去也| 色婷婷丁香中文在线播放| 99热伊人| 五月婷婷激情综合| 丁香五月婷婷亚洲综合精品| 久久综合五月天| 婷婷丁香成人| 色色色激情网| 乱岳熟女50岁| 色五月欧美| 五月综合激情| 天天干天天日天天操| 天天综合图片| 婷婷丁香五月久久| 中文久久久人妻| 亚洲中文av| 超碰国产AV| 色婷婷91激情小说| 五月天婷婷激情六月久久| 免费看欧美成人A片无码| 99热精品在线观看| 久久九九热视频| 玖玖爱综合网| 玖玖在线视频| 丁香六月婷| 乱码操操| 五月丁香色婷婷| 99精品自拍| 婷婷精品在线| 激情五月丁香婷婷| www.狠狠操| 97久久视频| 五月婷婷五月| 嫩BBB搡BBBB榛BBBB| 五月天色色色| 国产成人精品一区二三区熟女在线| 色婷婷丁香五月| 婷婷开心激情| 四川BBB搡BBB搡多人乱亂| 色爱综合网| 五月天激情小说网| 色婷青青| 99在线综合视频| 9色在线视频精品观看| 波多野结衣成人作品在线| 日本97在线看片| 五月丁香偷拍| 99re热精品在线视频| www.主妇. com| 丁香六月天AV| 五月综合色播播丁香婷婷| 天天高潮夜夜爽| 五月婷婷丁香五月 | 五月丁香六月婷婷,婷| 99热这是里只有精品| 久久丁香五月婷婷激情综合网| 久久黄色网扯| www夜夜操com| 色色网站| 婷婷五月丁香四射| 另类图片色五月| 久久与婷婷| 五月丁香亭亭天天舔| 日韩AAAAA| 操人无码| 五月丁香另类网| 色婷婷综合综合网| 久热视频这里只有精品68| 日韩在线aaa| 久久香蕉丁香| 中国女人做爰A片| 精品动漫 无码av| 五月丁香999| 五月婷婷这里都是精品| 99九九热视频| 在线中文AV| www.97干视频| 99色播| 超碰97免费在线| 99国产精品白浆在线观看免费| 丁香五月 无码| 就是色婷婷五月亚洲色| 99爱视频在线播放| 天天日夜夜| 激情婷婷综合网| 色色精品色| 狠狠xx| 五月天色色网站| 亚洲五月天色色| 99色看这里只有精品| 性色五月天| 性一交一乱一交A片久| 九九99在线视频| 激情五月综合免费| 婷婷丁香五另类网站| 91 影音先锋| 超碰超碰在线| 五月丁香六月在线| 操B无码视频国语| 天天做天天爱天天爽夜夜揉| 日本爆乳片手机在线播放| 国产婷婷色综合AV蜜臀AV| 欧洲一区二区| 久久机热/这里只有精品| 五月婷久久| 大香蕉久热| 国产午夜精品久久久观看| 99热99色| 91综合在线| 五月丁香综合影院| 亚洲欧洲一二| www.成人婷婷综合| 天天干在线播放| www.狠狠操.co m| 久久人人超| 视频在线免费观看欧洲乱码| 五月婷婷色激情| 人妻熟女一区二区AV| 91日韩在线| 日本婷久久| 综合亚洲AV| 99视频网| 中文字幕av网站| 五月天狠狠干| 大香蕉AV电影在线| 色五月成人在线| 日韩丰满少妇无码内射| 丁香五月大片| 亚州在线中文字幕| 五月婷婷精品无在线| 蜜桃成语时李时珍 免费| 狠狠做六月爱婷婷综合aⅴ| 婷婷五月av| 久久多色| 能看的AV| 婷婷六月丁香色| 搡BBBB搡BBB搡18| 五月天婷五月天综合网在线观| 狠狠干天天日| 狠狠色丁婷婷日日,伊人激情综合网| 99精品网| 日操五月婷| 99热 精品在线| 99热这里只有精品33| 超碰在线免费观看日韩| 99热这里只有精品最新| 激情五月婷婷色色| 日韩99视频| 天天色丁香| 激情AV| 玖玖伦理电影| 久久九九激情五月天 | 欧美日韩成人在线观看| 五月婷婷久久综合| 亚洲妇女熟BBW| 我爱婷婷五月天综合88| 日本天堂网站99| 丁香六月激情综合| 青草青草久热这里只有精品| 少妇2做爰HD韩国电影| 字母不卡码人逼| 99精品性爱| 色综合久久综合中文综合网| 99热这里是精品| 亚洲五月天婷婷综合| 五月丁香婷色| 丁香婷婷六月| 天天爽日日爽夜夜爽| 99玖玖人人| 六月丁香久久| 五月婷婷婷婷婷婷艺术| 99热热热国产超碰| www.zbzhongsen.com| 欧美性色五月天| 91操操| 欧美色小说婷婷| 色青五月天| 五月婷婷在线免费观看| 婷婷亚洲色| 91热久久| 在线中文字幕免费视频| 久久久97| 天天插AV丝袜中| 婷婷久久五月天| 久久久久久久11111111111| 婷婷综合在线| 综合激情综合啪啪| 婷婷射图| 一本婷婷丁香久久 | 狠狠综合区| 99日韩| 99热这里只有精品青草| 熟妇天天综合| 另类视频在线| 综合啪啪| 五月 婷婷 成人| 激情婷婷五月久久| 五月间天堂综合| 熟女少妇内射日韩亚洲| 任你爽免费视频| 狠狠插日日干撸| 激情影院内射| 九九精品99| 一级韩国产精品毛| 96精品成人无码A片观看金桔| 婷婷五月色综合| 狠狠草综合网| 激情婷婷亚洲五月| 亚洲九九夜夜| 久久久宗合| 丁香五月婷婷高清| 激情五月丁香五月综合| 丁香五月天啪啪| 大香蕉婷婷五月天| 五月婷婷在线观看黄| 激情综合六月| 26UUU欧美激情一区二区| 99操视频| 九九操操| 天天射美女| 97热久久五月婷婷| 国产亚洲色婷婷久久99精品9j| 白人荫道BBWBBB大荫道| 九九人人操| 婷婷色五月天在线观看| 东京热伊人| 激情久久丁香| 99a级片| 啊V视频在线观看| 日韩高清久久| 99久久精品国产色欲| 热99一二三| 99久久天堂婷婷| 久久久全国免费视频| 亚洲精品无码99热| 亚洲国产精品成人午夜| 91se精品国产| 五月天色软件| 九九激情| 爆乳熟女一区二区三区爆乳| 91.com男女操| 操久久网| 丁香六月婷婷开心| 五月丁香va| 色婷婷丁香五月在线| 婷婷丁香高潮了| 色播五月天天| 99热99re6国产在线播放| 成年人99热| 操射国产日本| 激情五月五月婷婷| 人人人操| 99操碰| 国产真实乱了老女人视频| 97在线观视频免费观看| 黄色AAAA韩国guochansanji| 丁香五月婷婷亚洲激情四射| 五月天天堂久久| 97久久超碰| 中文字幕婷婷五月天| 琪琪理论片| 天天舔天天插天天干| 色丁香影院| 成人丁香五月| 五月丁香综合伦理片| 精品无码视频| 99九九视频精彩在线| 狠狠综合网| 99精品视频在线观看| 久9综合| 先锋资源91| 天天 青草 制服丝袜 在线| 狠狠色狠狠鲁| 丁香五月伊人| www狠狠| 超碰69天堂| 狠狠第四色| 五月情四婷婷| 九九热这里| 五月婷婷开心网| 日日操夜夜操不卡| 激情久久久久| 热99热9| 99热1| 丰满人妻妇伦又伦精品国产| 成人在线视频一区| 亚洲精品乱码久久久久久综合| 欧美爆乳一区二区三区| 激情综合久久| jiujiuxiangjiaowang| 天天操无码| 五月综合六月婷婷| 五月丁香六月婷婷网| 欧美,日韩成人在线| 五月天婷婷av| 丁香成人视频| 97色吧| 亚洲综合无码| 九九色播五月丁香| 天天摸日日舔狠狠添婷婷婷| 99ri国产| 丁香五月天堂网AV| 九九热区一区二区三区| 337p大胆噜噜噜噜噜91Av| 九九热狼人| 欧洲永久精品| 97在线综合| 日日操夜夜操中国无码| 狠狠久久婷五月综合色| 一区二区三区视频| 97久操视频| 99精品无码网站| 开心五月深爱五月| 色综合九九色综合88| 五月婷婷之美女图片| 国产高潮A片羞羞视频涩涩| 亚洲天99| 婷婷 色 丁香 夜| 婷婷视频在线| 色综合播放| 日日.c| 九九99热久久精品66中文字幕| 久久在线人妻| 久久免费精彩视频| 久久这里只有精品5| 99热精品在线观看| 99色在线视频观看| A久网| 色色色com| 国产91资源在线| 婷婷五月情色| 国产亚洲精品久久久久久郑州| 狠狠综合网| 精品成人在线观看| 99人人干人人| 免费国产视频| 熟女激情五月天| 伊人激情啪啪| 天天色播| 久久er视频6| 五月天色影院| 久久五月天精品视频| 精品乱码久久久久| 五月丁香爱婷婷深深| 久久这里只有精品8| 黄网在线免费观看| 色播五月丁香| 亭亭玉立国色天香| 精品久久99| 欧美丁香六月在线观看视频| 极品人妻VIDEOSSS人妻| 五月天婷婷激情干干| 99视频| 欧美另类五月激情| 五月九九综合| 久久这里有精品| 日本97在线| www,久久久| 九九色中文| 丁香六月激情| 色了色综合| 999精品久久久久久久| 色五月婷婷在线观看| 丁香六月激情综合网| 欧美日韩成人在线观看| 九九性视频| 婷婷久久综合| 天天夜天天色天天| sewuyuetingtingiii| 婷婷激情九月| 久这里只有精品| 欧美成人在线观看| 五月婷婷色五月| 色婷婷免费观看| 九九在线视频| 美国天天操无码| 女同激情久久av久久| 五月丁香婷婷综合在线| 不卡在线超碰| 激情五月婷婷视频一区二区三区| 91大神操美女| 国产毛片欧美毛片久久久| 亚洲一区二区无码蜜乳av| 人人超碰99| 在线观看中文字幕| 日本在线噜噜| 丁香伊人网| 欧美顶级少妇做爰HD| 天天激情| 99久久久国产大片| 97涩婷婷婷婷基地| 黄网在线播放| 五月婷婷精品无在线| 亚洲人妻Av| 国产肥白大熟妇BBBB视频| 天天插天天插天天插天天插| 久久色情| 久久婷婷五月综合网| 六月婷婷激情图片| 这里只有精品久| 六月丁香综合| 无码碰碰| 可以免费观看的AV| 五月丁香婷婷成人网| 俺来也综合网精品一区| 人人97操| 男妓跪趴把舌头伸进我的嘴巴| 欧洲激情精品婷婷| 色久婷婷网| 狼友超碰| 一本色道久久综合狠狠躁一二三| 婷婷91| 在线1青婷| 99这里只有免费的小视频在线观看| 色五月婷婷影视| 99热这里是精品| 99热免费网站| 丁香五月婷婷偷拍| 国产性爱大片久久| 狠狠爱综合网| 九色视频91| 婷婷丁香色无五月 | 婷婷五月天论坛| 五月丁香六月激情综合网| 色情五月天导航| 亚州在线中文字幕| 成人片在线播放| 久久婷丁香五月| 色婷婷AV久久久久久久| 丁香五月综合在线| 99惹在线精品免费观看| 五月婷婷天堂| 丁香婷婷婷五月综合色情| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 亚洲网站观看视频| 天天操夜夜操| 六月天婷婷| 日本精品99| 日韩黄色电影| 激情五月丁香亭亭| 九九这里都是精品| 婷婷五月天激情五月天网站| 五月丁香啪啪激情| 五月天无码| 激情综合色网| 亚洲av免费在线| www99久久| 久久99精品久久久久久噜噜| 婷婷丁香91| 丁香五月www| 涩玖玖免费视频| 丁香婷婷综合影院| 日本www免费九九| 超碰人人摸人人操| 丰满少妇乱A片无码| 天天射影院| 五月天婷婷色小说| 538久久| 爱草视频在线| 99亚洲大片精品永久在线观看| 五月天免费色| 综合在线丁香五月| 丁香五月人妻熟女| 秋霞三及片| 天天爽天天日天天舔| 婷婷色正月| 色婷婷五月天在线观看| 色色99| 91久久1118| 激情小说在线视频| 99热精品在线观看| 大香蕉在九| 99艹精品在线观看| 五月婷婷色啪| 99人碰碰碰| 成人va在线观看视频| 午夜美女人啪最红院| 久热视频这里只有精品68| 青青草原福利在线| 五月婷婷六月情| 午夜激情综合| 婷婷色色网| 黄色国久久| 九九久久污| 五月丁香婷婷久久| 丁香五月丐人妻| 在线观看玖玖资源免费观看| 天天爽免费视频| 婷婷97碰碰| 久久久com| 久久成人亚洲欧美电影| 男人天堂AV在线一区二区| www999日韩精品| 六月婷婷之青青草| www.五月瑟| 激情婷婷丁香五月天| 婷婷色色五月| www.九九婷婷| 无码se| 战争与艾拉电影免费观看| 天天做天天爽| 99操碰| 日噜噜色| 国产精产国品一二三在观看| 91九九热| 只有精品在线观看| 丁香成人色情五月天| 丁香五月中文字幕| 香蕉久久国产AV一区二区| 亚洲成人无码片| 婷激情五月天视频导航| 丁香五月天网友自拍啪啪啪视频| 91一起艹| 大香蕉婷婷婷| 久久久人妻久久久| 婷婷丁香色五月| 色五月av| 視频福利乱色| 深爱开心激情网| 97色天堂| 久爱综合| 在线播放中文字幕| 99视频网| 五月丁香影院| 国产性爱一级| 亚洲中文乱字字幕线在永久| 亚洲综合色色| 久久电影五月天丁香电影| 91蜜桃婷婷狠狠久久综合9色| 日日夜夜小色哥| 综合色播| 久久久久激情网| 天天插天天干天天舔| 99热伊人| 99免费青青蜜臀| ji'qing'luan'ren'lun| 婷婷色网站| 热久久婷婷| 色天天狠狠干| 亚洲激情四射| 日熟女| 婷婷色爱| 黄色三级毛片中字| 亚洲精品网站色视频| 干一干xxxx| 涩涩激情五月婷婷| 蜜乳A√| 二色av| 五月婷婷激情综合| 久热亚洲| 婷婷五月色花丁香社区| 森林影视大全,最好看的2019年视频| 5月婷婷视频网站综合| 播五月丁香三月婷婷| 九九XX视频| AV 3P| 五月婷婷六月丁香| 婷婷五月天堂网| 激情五月综合网最新| 久久九九re热| 婷婷五月丁香手机在线视频| 午夜天天精品视频| 五月综合婷婷网| 这里只有精品视频在线| 中文网AV| 色五月av| 入口五月婷婷六月香| 超碰人人干| 天堂资源欧日浪女在线播放| 人人爱人人草| 久久香蕉婷婷| 久久激情网| 一操久久| 伊人婷婷色| 色色五月婷婷久久| 久热中文字幕| 久久9精品| 这里只有精品免费视频| 热99国产精品| 日本色婷婷| 美女va| 成人做爰A片免费看视频| 第二色AⅤ| 无码少妇高潮喷水A片免费| 亚洲AV激情五月综合网| 国产AV一区二区三区最新精品| 南京搡BBBB搡BBBB| 丰满人妻妇伦又伦精品国产 | 色婷婷伦理| 五月丁香色停停啪啪啪| 中文字幕色色色| 色九九一二| 激情婷婷五月天| 任你爽精品免费视频6| 极品五月天| 久99久视频精选| 丁香激激情网| 五月丁香六月停停停| 丁香五月激情五月开心五月| 久久日韩婷婷五月| 操碰99| 综合欧美五月婷婷| 欧美日本韩国亚洲| 婷婷六月激情综合| 亚洲成人在线综合| 五月天婷亚洲综合在线嫩草网| 丁香五月av| 婷婷激情五月天在线| 亚洲色基地| 丁香婷婷色五月| 丁香亚洲婷婷五月| 人人操大| 1024日韩| Jh7Uf088VHafNm| 亚洲综合成人网站| 人妻啪啪啪| 久久人妻高清中文| 色偷偷色婷婷| 99色热| 国产欧洲欧洲精品久久| 五月丁香操婷逼| 日欧一片内射VA在线影院| 五月丁香六月婷婷在线| 大香蕉婷婷色| 婷婷五月欧美综合| 婷婷在线视频| 日韩黄黄| 色婷婷影| 国产肥白大熟妇BBBB视频| 99热这里只有精品中文字幕| 他改变了拜占庭| 日本丰满久久| 婷婷五月婷婷| 天天天天天天操| 亚洲丁香婷婷五月天综合色| 欧洲区自拍| 色狠狠色| 色五月婷婷五月天| www.婷婷五月天啪啪| 久9视频免费播放| 被强行糟蹋的女人A片| 99色在线观看视频| 九九久久99| 色欲婷婷五月天| 色五月激情问网站| 99碰碰| 九九人人精品| 伊人9999| 婷婷激情五月吧| 婷婷五月综合啪| 99超超碰| 俺去也五月天| 丁香五月天视频| 99热这里只是精品| 天天干,天天舔| 国产99久9在线| 激情久久伊人| 色综合色综合网| 99玖玖免费视频| 久热网在线视频| 天天狠狠插| 玖玖在线视频福利| 99热6精品| 色噜噜狠狠色综合日日| 俺也去综合| 青青草搞屄视频网站| 五月天婷婷免费| 久草视频大香蕉99| 青青久在线视频免费观看| www99热| 免费播放片大片| 色播五月婷婷五月| 人人操A| 五月婷婷伊人网| 天天天久久久| www色色色com| 天天搞天天色综合| 99热 在线播放| 婷婷五月天综合久久日美女| 国产成人精品一区二三区熟女在线| 99精品在线| 久婷婷婷| 99视频九九热| 婷婷色导航| 婷婷五月六| 五月婷婷之美女图片| 丁香五月久久综合| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 久久久18| 99久久久免费| 色婷婷伊人| 九热精品| 大香蕉五月天婷婷丁香91| 超碰爱爱爱| 色综合偷拍| 秋霞AV美国| 五月天狠狠色| 91岛国片| 成人午夜免费电影| 操逼六区| 97性视频| 久久久www| 激情五月天婷婷直播| 97色在线| 天天搽天天射| 天天噜天天爱| 美女100%露全身无挡网站| 人人天堂操| 婷婷成人小说综合| 色五开心五月五月深深爱| 欧美va欧美va差| 久久久精品色| 啪啪色区| 九九99在线免费在线观看视频| 日韩1区2区| 中文字幕人妻熟女在线| 日韩性爱AV| 激情五月狠狠喔| 青996青| 色五月婷婷久久| 思思99精品视频在线观看| 久热最新视频 | 岛国AV网| 五月天丁香综合久久国产| 日本久久精品| 色婷婷六月| 依人大香蕉在钱1| 色99www.| 五月天激情影院| 色婷婷六月激情| 五月天婷婷中文字幕在线播放| 天天舔天天爽| 激情丁香五月天| 免费超碰在线观看| 色婷九九九| 九九热超碰| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 包操45分钟网站| 91碰九色| 欧美 日韩 成人在线| Av性爱网站| 婷婷五月天综合色| 99在线热视频| 婷婷色五月激情| 成人AV播放| 婷婷丁香激情综合色情| 日本婷婷综合精品| 亚洲99热| 日日色综合| 在线播放 精品| 久热 91| 综合性视频99| 婷婷午夜综合| 国自产拍偷拍精品啪啪一区二区| 国产高潮白浆一区二区| 五月天大香蕉| www.激情五月天| 综合五月婷婷| 日本三级成人秘书精品片| 亚洲成人av在线播放| 五月婷婷在线视频免费观看| 欧美草久久五月天91| 亚洲天堂热| 五月天综合在线网| 影音先锋一区二区三区| www色中色综合| 国产67194| 嘿嘿视频免费看9| 久久婷婷激情五月天一区二区| 六月合五月婷| 日本高清久久| 色婷婷天堂| 天天干天天爽天天操| 欧美25p| 97人妻碰碰碰久久| sewuyuejiqingwang| 亚洲九区| 99热99热在线| 成人片黄网站色大片免费毛片| 七七九色| 国产精品成人av在线观看春天| 99爱视频在线观看这里只有精品| 欧美婷婷色五月网| 深爱网深爱综合网| 超碰97人人操| 一区二区aV电影免费看| 熟女五月天久久综合| 久久五月婷| av无码电影| 久狠日av| 亚洲乱码日产精品BD| 99色婷婷视频| 五月天激情四射网站| 激情影院69| 五月色丁香婷婷中文字幕| 人人干人人看| 99色干| 99热免费| 日韩无码系列| 97丁香五月| 中日韩美欧成人一区二区精品在线| 六月丁香婷婷视频综合在线观看| 天天日日夜夜| 91刘玥视频在线观看| 五月停停丁香| 国产成人精品一区二三区熟女在线| 久久婷婷五月天激情新地址| 综合狠狠干| 天天操五月天| 五月天综合色| 91xxxx九色| 久久免片| 99资源人人| 五月花激情| 国产欧美大香蕉一区| 婷婷五月丁香六月天亚洲综合| 国产真实乱了老女人视频| 色色99色色| 色99视频| 干亚洲天堂| 国精产品一区一区三区免费视频| 狠狠五月激情在线| 五月天激情综合| 国产中文亚洲欧美日韩性交| 六月婷婷色| 思思99热在线| 亚洲亚洲人成综合网络| RenRenSe在线视频网站|