精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

可能是全網最完整的 Python 操作 Excel庫總結!

開發 后端
大家好,我是早起。在之前的辦公自動化系列文章中,我已經對Python操作Excel的幾個常用庫openpyxl、xlrd/xlwt、xlwings、xlsxwriter等進行了詳細的講解。

  大家好,我是早起。

[[384275]]

在之前的辦公自動化系列文章中,我已經對Python操作Excel的幾個常用庫openpyxl、xlrd/xlwt、xlwings、xlsxwriter等進行了詳細的講解。

為了進一步帶大家了解各個庫的異同,從而在不同場景下可以靈活使用,本文將橫向比較7個可以操作 Excel 文件的常用模塊,在比較各模塊常用操作的同時進行鞏固學習!

首先讓我們來整體把握下不同庫的特點

  1. xlrd、xlwt、xlutils 各自的功能都有局限性,但三者互為補充,覆蓋了Excel文件尤其是 .xls 文件的操作。xlwt 可以生成 .xls 文件,xlrd 可以讀取已經存在的 .xls 文件,xlutils 連接 xlrd 和 xlwt 兩個模塊,使用戶可以同時讀寫一個 .xls 文件。簡單來說,xlrd 負責讀、xlwt 負責寫、xlutils 負責提供輔助和銜接
  2. xlwings 能夠非常方便的讀寫 Excel 文件中的數據,并且能夠進行單元格格式的修改
  3. XlsxWriter 是一個用來寫 .xlsx 文件格式的模塊。它可以用來寫文本、數字、公式并支持單元格格式化、圖片、圖表、文檔配置、自動過濾等特性。但不能用來讀取和修改 Excel 文件
  4. openpyxl 通過 工作簿 “workbook - 工作表 sheet - 單元格 cell” 的模式對 .xlsx 文件進行讀、寫、改,并且可以調整樣式
  5. pandas 大家都不陌生,是進行數據處理和分析的強大模塊,有時也可以用來自動化處理Excel

如果你懶得看詳細的對比過程,可以直接看最后的總結圖,然后拉到文末收藏點贊就算學會了

 

一、安裝

7個模塊均為非標準庫,因此都需要在命令行中 pip 進行安裝:

 

  1. pip install xlrd 
  2. pip install xlwt 
  3. pip install xlutils 
  4. pip install xlwings 
  5. pip install XlsxWriter 
  6. pip install openpyxl 
  7. pip install pandas 

二、模塊導入

多數模塊可以直接通過名字導入,有些模塊約定俗稱會使用縮寫:

 

  1. import xlrd 
  2. import xlwt 
  3. import xlwings as xw 
  4. import xlsxwriter 
  5. import openpyxl 
  6. import pandas as pd 

xlutils 模塊是 xlrd 和 xlwt 之間的橋梁,最核心的作用是拷貝一份通過 xlrd 讀取到內存中的 .xls 對象,然后再拷貝對象上通過 xlwt 修改 .xls 表格的內容。xlutils 可以將 xlrd 的 Book 對象復制轉換為 xlwt 的Workbook 對象,具體使用時通常導入的是模塊中的 copy 子模塊:

 

  1. import xlutils.copy 

三、讀取 Excel 文件

3.1 獲取文件

并不是所有7個模塊都可以讀取 Excel 文件,而即使能讀取Excel文件也要分不同后綴名進行討論,具體如下:

  1. xlwt、xlutils、XlsxWriter 不能讀取文件
  2. xlrd 可以讀取 .xls 和 .xlsx 文件
  3. xlwings 可以讀取 .xls 和 .xlsx 文件
  4. openpyxl 可以讀取 .xlsx 文件
  5. pandas 可以讀取 .xls 和 .xlsx 文件

下面使用兩個大小均為 10MB 的 .xls 和 .xlsx 文件進行測試:

 

  1. xls_path = r'C:\xxx\Desktop\test.xls' 
  2. xlsx_path = r'C:\xxx\Desktop\test.xlsx' 

3.1.1 xlrd 讀取文件

xlrd 可以讀取 .xls 和 .xlsx 文件

 

  1. xls = xlrd.open_workbook(xls_path) 
  2. xlsx = xlrd.open_workbook(xlsx_path) 

3.1.2 xlwings 讀取文件

xlwings 直接對接的是 apps,也就是 Excel 應用程序,然后才是工作簿 books 和工作表 sheets,xlwings 需要安裝有 Excel 應用程序的環境xlwings 可以讀取 .xls 和 .xlsx 文件

 

  1. app = xw.App(visible=True, add_book=False) # 程序可見,只打開不新建工作薄 
  2. app.display_alerts = False # 警告關閉 
  3. app.screen_updating = False # 屏幕更新關閉 
  4. # wb = app.books.open(xls_path) 
  5. wb = app.books.open(xlsx_path) 
  6. wb.save() # 保存文件 
  7. wb.close() # 關閉文件 
  8. app.quit() # 關閉程序 

3.1.3 openpyxl 讀取文件

openpyxl 可以讀取 .xlsx 文件

 

  1. wb = openpyxl.load_workbook(xlsx_path) 

如果讀取 .xls 文件會報錯:

 

  1. wb = openpyxl.load_workbook(xls_path) 

openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.

3.1.4 pandas 讀取文件

pandas 可以讀取 .xls 和 .xlsx 文件

 

  1. xls = pd.read_excel(xls_path, sheet_name='Sheet1'
  2. xlsx = pd.read_excel(xlsx_path, sheet_name='Sheet1'

接下來比較四個模塊在同一配置電腦下讀取 10MB .xlsx 文件的時間(運行3次求平均值),所用代碼為:

 

  1. import time 
  2. import xxx 
  3.  
  4. time_start = time.time() 
  5. xxx 
  6. time_end = time.time() 
  7. print('time cost: ', time_end-time_start, 's'

最后測試的結果是,xlwings 讀取 10MB 文件最快,xlrd 次之,openpyxl 最慢(因電腦而異,結果僅供參考)

讀入 Excel 文件部分的表格總結如下:

 

 

 

3.2 獲取工作表

針對上述4個可以讀取 Excel 文件的模塊,進一步討論其獲取工作表 sheet 的方式

3.2.1 xlrd 獲取工作表

可以通過 sheet 名查找:

 

  1. sheet = xlsx.sheet_by_name("Sheet1"

也可通過索引查找:

 

  1. sheet = xlsx.sheet_by_index(0) 

3.2.2 xlwings 獲取工作表

xlwings 的工作表分為活動工作表以及指定工作簿下的特定工作表:

 

  1. sheet = xw.sheets.active  # 在活動工作簿 
  2. sheet = wb.sheets.active  # 在特定工作簿 

3.2.3 openpyxl 獲取工作表

.active 方法默認獲取工作簿的第一張工作表

 

  1. sheet = wb.active 

另外也可以通過工作表名指定獲取工作表:

 

  1. sheet = wb['Sheet1'

3.2.4 pandas 獲取工作表

單獨獲取工作表完全沒有 pandas 什么事情,因為讀取文件的同時已經且必須指定工作表才能讀?。?/p>

 

  1. xlsx = pd.read_excel(xlsx_path, sheet_name='Sheet1'

四、創建 Excel 文件

簡單總結創建 Excel 文件的情況:

  1. xlrd、xlutils 不能創建 Excel 文件
  2. xlwt 只能創建 .xls 文件,不能創建 .xlsx 文件
  3. xlwings可以創建 .xls 和 .xlsx 文件
  4. XlsxWriter 可以創建 .xlsx 文件
  5. openpyxl 可以創建 .xls 和 .xlsx 文件
  6. pandas 沒有創建 Excel 的概念,但可以存儲時產生 .xls 或 .xlsx 文件

4.1 xlwt 創建文件

xlwt 只能創建 .xls 文件,不能創建 .xlsx 文件

 

  1. xls = xlwt.Workbook(encoding= 'ascii'
  2. # 創建新的sheet表 
  3. worksheet = xls.add_sheet("Sheet1"

4.2 xlwings 創建文件

xlwings可以創建 .xls 和 .xlsx 文件,只需要最后保存時寫清楚后綴即可。使用如下命令:

 

  1. wb = app.books.add() 

無論是新建還是打開都需要保存工作簿、關閉工作簿、關閉程序,即:

 

  1. wb.save(path + r'\new_practice.xlsx')  
  2. wb.close()  
  3. app.quit() 

4.3. XlsxWriter 創建文件

XlsxWriter 可以創建 .xlsx 文件:

 

  1. xlsx = xlsxwriter.Workbook()    
  2. # 添加工作表 
  3. sheet = xlsx .add_worksheet('Sheet1') 

4.4 openpyxl 創建文件

openpyxl可以創建 .xls 和 .xlsx 文件,只需要最后保存時寫清楚后綴即可。使用如下命令:

 

  1. wb = Workbook() 
  2. # 新工作簿中指定即創建工作表 
  3. sheet = wb.active 

4.5. pandas 創建文件

pandas 只需要最后轉存時寫清楚后綴即可。實際上比較抽象,pandas 并不需要一開始先創建一個 Excel 文件,可以圍繞數據框做各式操作后用 .to_excel 命令再用 .xls 或者 .xlsx 做文件后綴。如果一定要產生一個空白 Excel 文件可以用如下命令:

 

  1. df = pd.DataFrame([]) 
  2. df.to_excel(r'C:\xxx\test1.xlsx'

五、保存文件

簡單總結保存 Excel 文件的情況:

  1. xlrd 不能保存 Excel 文件
  2. xlwt 可以保存 .xls 文件
  3. xlutils 可以將 xlrd 對象復制為 xlwt 對象后保存 .xls 文件
  4. xlwings可以保存 .xls 和 .xlsx 文件
  5. XlsxWriter 可以保存 .xlsx 文件
  6. openpyxl 可以保存 .xlsx 文件
  7. pandas 可以保存 .xls 或 .xlsx 文件

5.1 xlwt 保存文件

xlwt 可以保存 .xls 文件

 

  1. # xls = xlwt.Workbook(encoding= 'ascii'
  2. # worksheet = xls.add_sheet("Sheet1"
  3. xls.save("new_table.xls"

5.2 xlutils 保存文件

xlutils 可以將 xlrd 對象復制為 xlwt 對象后保存 .xls 文件

 

  1. # xls_path = r'C:\xxxx\test.xls' 
  2. # xls = xlrd.open_workbook(xls_path) 
  3. xls_xlutils = xlutils.copy.copy(xls) 
  4. xls_xlutils.save('new_text.xls'

5.3 xlwings 保存文件

xlwings可以保存 .xls 和 .xlsx 文件

 

  1. # wb = app.books.open(xls_path) 
  2. wb = app.books.open(xlsx_path) 
  3. wb.save() # 保存文件 
  4. wb.close() # 關閉文件 
  5. app.quit() # 關閉程序 

5.4 XlsxWriter 保存文件

XlsxWriter 可以保存 .xlsx 文件,.close 命令執行后文件關閉的同時保存:

 

  1. # xlsx = xlsxwriter.Workbook() 
  2. # sheet = xlsx .add_worksheet('Sheet1'
  3. xlsx.close() 

5.5 openoyxl 保存文件

openpyxl 可以保存 .xlsx 文件

 

  1. # wb = openpyxl.load_workbook(xlsx_path) 
  2. # wb = Workbook() 
  3. # sheet = wb.active 
  4. wb.save('new_test.xlsx'

6. pandas 保存文件

pandas 可以保存 .xls 或 .xlsx 文件

 

  1. df1 = pd.DataFrame([1, 2, 3]) 
  2. df2 = pd.DataFrame([1, 2, 4]) 
  3. df1.to_excel(r'C:\xxxx\test1.xls'
  4. df2.to_excel(r'C:\xxxx\test2.xlsx'

六、獲取單元格的值

獲取單元格的值基本前提是能夠讀取文件,因此基本圍繞 xlrd、xlwings、openpyxl、pandas 介紹。xlutils 由于能夠復制一份 .xls 因此也可以使用和 xlrd 完全一樣的讀取單元格方法。

6.1. xlrd/xlutils 獲取單元格

xlutils 因為是直接拷貝一份 xlrd 適用的對象,讀取單元格使用的方法和 xlrd 完全一樣。xlwt 沒有讀取單元格的能力

 

  1. # xls = xlrd.open_workbook(xls_path) 
  2. # sheet = xlsx.sheet_by_name("Sheet1"
  3. value = sheet.cell_value(4, 6) # 第5行第7列的單元格 
  4. print(value) 
  5. rows = table.row_values(4) 
  6. cols = table.col_values(6) 
  7. for cell in rows
  8.     print(cell) 

6.2. xlwings 獲取單元格

 

  1. # app = xw.App(visible=True, add_book=False)  
  2. # app.display_alerts = False  
  3. # app.screen_updating = False  
  4. # wb = app.books.open(xls_path) 
  5. # sheet = wb.sheets.active 
  6.  
  7. # 獲取單個單元格的值 
  8. A1 = sheet.range('A1').value 
  9. print(A1) 
  10. # 獲取橫向或縱向多個單元格的值,返回列表 
  11. A1_A3 = sheet.range('A1:A3').value 
  12. print(A1_A3) 
  13. # 獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表 
  14. A1_C4 = sheet.range('A1:C4').value 
  15. print(A1_C4) 
  16. # 獲取單個單元格的值 
  17. A1 = sheet.range('A1').value 
  18. print(A1) 
  19. # 獲取橫向或縱向多個單元格的值,返回列表 
  20. A1_A3 = sheet.range('A1:A3').value 
  21. print(A1_A3) 
  22. # 獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表 
  23. A1_C4 = sheet.range('A1:C4').value 
  24. print(A1_C4) 

6.3 openpyxl 獲取單元格

 

  1. # wb = openpyxl.load_workbook(xlsx_path) 
  2. # wb = Workbook() 
  3. # sheet = wb.active 
  4.  
  5. # 一、指定坐標范圍的值 
  6. cells = sheet['A1:B5'
  7. # 二、指定列的值 
  8. cells = sheet['A'
  9. cells = sheet['A:C'
  10. # 三、指定行的值 
  11. cells = sheet[5] 
  12. cells = sheet[5:7] 
  13. # 獲取單元格的值 
  14. for cell in cells: 
  15.     print(cell.value) 

6.4 pandas 獲取單元格的值

pandas 讀取 Excel 文件后即將它轉換為數據框對象,解析內容的方法基本是 pandas 體系中的知識點,如 .iloc() .loc() .ix() 等:

 

  1. print(df1.iloc[0:1, [1]]) 
  2. print(df1.loc['b']) 
  3. print(df2.ix['a''a']) # 有些版本取消了ix,可以用iat 

七、寫入數據

還是先簡單總結對 Excel 文件寫入數據的情況:

  1. xlrd 不能寫入數據
  2. xlwt 可以寫入數據
  3. xlutils 可以借用 xlwt 方法寫入數據
  4. xlwings可以寫入數據
  5. XlsxWriter 可以寫入數據
  6. openpyxl 可以寫入數據
  7. pandas 將 Excel 文件讀取為數據框后,是抽象出數據框層面進行操作,沒有了對 Excel 進行單元格寫入和修改的概念

7.1. xlwt/xlutils 寫入數據

 

  1. # xls = xlrd.open_workbook(xls_path) 
  2. # xls_xlutils = xlutils.copy.copy(xls) 
  3. # sheet = xls_xlutils.sheet_by_name("Sheet1"
  4. # value = sheet.cell_value(4, 6) 
  5. # print(value) 
  6. sheet.write(4, 6, "新內容"

7.2 xlwings 寫入數據

 

  1. # app = xw.App(visible=True, add_book=False)  
  2. # app.display_alerts = False  
  3. # app.screen_updating = False  
  4. # wb = app.books.open(xls_path) 
  5. # sheet = wb.sheets.active 
  6.  
  7. # 寫入 1 個單元格 
  8. sheet.range('A2').value = '大明' 
  9. # 一行或一列寫入多個單元格 
  10. # 橫向寫入A1:C1 
  11. sheet.range('A1').value = [1,2,3] 
  12. # 縱向寫入A1:A3 
  13. sheet.range('A1').options(transpose=True).value = [1,2,3] 
  14. # 寫入范圍內多個單元格 
  15. sheet.range('A1').options(expand='table').value = [[1,2,3], [4,5,6]] 

7.3 XlsxWriter 寫入數據

代碼中的 new_format 是之前預設好的樣式,下文會進行介紹

 

  1. # xlsx = xlsxwriter.Workbook() 
  2. # sheet = xlsx .add_worksheet('Sheet1'
  3.  
  4. # 一、寫入單個單元格 
  5. sheet.write(row, col, data, new_format) 
  6. # A1:從A1單元格開始插入數據,按行插入 
  7. sheet.write_row('A1', data, new_format) 
  8. # A1:從A1單元格開始插入數據,按列插入 
  9. sheet.write_column('A1', data, new_format) 

7.4. openpyxl 寫入數據

 

  1. # wb = openpyxl.load_workbook(xlsx_path) 
  2. # wb = Workbook() 
  3. # sheet = wb.active 
  4.  
  5. # 一、寫入單元格 
  6. cell = sheet['A1'
  7. cell.value = '業務需求' 
  8. # 二、寫入一行或多行數據 
  9. data1 = [1, 2, 3] 
  10. sheet.append(data1) 
  11. data2 = [[1, 2, 3], [4, 5, 6]] 
  12. sheet.append(data2) 

八、樣式調整

依舊簡單總結對 Excel 文件樣式調整的情況:

  1. xlrd、xlutils 不能調整樣式 (也可以說 xlutils 可以,只不過是借用了 xlwt 的方法)
  2. xlwt 可以調整樣式
  3. xlwings可以調整樣式
  4. XlsxWriter 可以調整樣式
  5. openpyxl 可以調整樣式
  6. pandas 不能調整樣式

8.1 xlwt 調整樣式

xlwt 支持調整字體、邊框、顏色等樣式

 

  1. # 字體部分 
  2. # 初始化樣式 
  3. style1 = xlwt.XFStyle() 
  4. # 為樣式創建字體 
  5. font = xlwt.Font() 
  6. font.name = 'Times New Roman'   #字體 
  7. font.bold = True                #加粗 
  8. font.underline = True           #下劃線 
  9. font.italic = True              #斜體 
  10. # 設置樣式 
  11. style1.font = font 
  12. # 使用樣式 
  13. sheet.write(4, 6, "新內容1", style1) 
  14.  
  15. # 邊框部分 
  16. borders = xlwt.Borders() 
  17. # 設置線型 
  18. borders.left = xlwt.Borders.DASHED 
  19. borders.right = xlwt.Borders.DASHED 
  20. borders.top = xlwt.Borders.DASHED 
  21. borders.bottom = xlwt.Borders.DASHED 
  22. # 設置樣色 
  23. borders.left_colour = 0x40 
  24. borders.right_colour = 0x40 
  25. borders.top_colour = 0x40 
  26. borders.bottom_colour = 0x40 
  27. #  
  28. style2 = xlwt.XFStyle() 
  29. style2.borders = borders 
  30. # 使用樣式 
  31. sheet.write(5, 8, "新內容2", style2) 

8.2 xlwings 調整樣式

簡單介紹 xlwings 對顏色的調整:

 

  1. # 獲取顏色 
  2. print(sheet.range('C1').color) 
  3. # 設置顏色 
  4. sheet.range('C1').color = (255, 0, 120) 
  5. # 清除顏色 
  6. sheet.range('C1').color = None 

8.3 XlsxWriter 調整樣式

XlsxWriter 包含大量功能,可以創建工作表后對工作表進行高定自定義的樣式修改:

 

  1. new_format = xlsx.add_format({ 
  2.         'bold':  True,  # 字體加粗 
  3.         'border': 1,  # 單元格邊框寬度 
  4.         'align''left',  # 水平對齊方式 
  5.         'valign''vcenter',  # 垂直對齊方式 
  6.         'fg_color''#F4B084',  # 單元格背景顏色 
  7.         'text_wrap'True  # 是否自動換行 
  8.     }) 
  9.  
  10. sheet.write(row, col, data, new_format) 

8.4 openpyxl 調整樣式

openpyxl 樣式主要包括字體、邊框、段落對齊樣式等

 

  1. # 字體樣式 
  2. from openpyxl.styles import Font  
  3. cell = sheet['A1']  
  4. font = Font(name='Arial'size=12, bold=True, italic=True, color='FF0000')  
  5. cell.font = font 
  6.  
  7. # 段落對齊 
  8. from openpyxl.styles import Alignment  
  9. cell = sheet['B2']  
  10. alignment = Alignment(horizontal='center', vertical='center',                     text_rotation=45, wrap_text=True)  
  11. cell.alignment = alignment  
  12.  
  13. # 邊框樣式 
  14. from openpyxl.styles import Side, Border  
  15. cell = sheet['B2']  
  16. side1 = Side(style='thin', color='FF0000')  
  17. side2 = Side(style='dashed')  
  18. border = Border(left=side1, right=side1, top=side2, bottom=side2)  
  19. cell.border = border 

九、插入圖片

簡單總結對 Excel 文件插入圖片的情況:

  1. xlrd、xlutils 不能調整樣式 (也可以說 xlutils 可以,只不過是借用了 xlwt 的方法)
  2. xlwt 可以插入 .bmp 圖片
  3. xlwings可以插入 圖片
  4. XlsxWriter 可以插入圖片
  5. openpyxl 可以插入圖片
  6. pandas 不能插入圖片

9.1 xlwt 插入圖片

xlwt 插入圖片要求圖片格式必須是 .bmp 格式才能插入成功

 

  1. sheet.insert_bitmap("test.bmp", 2, 3, 2, 2, 0.5, 0.5) 

insert_bitmap(img, x, y, x1, y1, scale_x, scale_y)img 表示要插入的圖像地址,x 表示行,y 表示列x1 y1 表示相對原來位置向下向右偏移的像素scale_x scale_y表示相對原圖寬高的比例,圖片可放大縮小

9.2 xlwings 插入圖片

下面是用xlwings 插入圖片的代碼,可以指定位置

 

  1. sheet.pictures.add(r'C:\\xxx.jpg'
  2. # 也可以給定位置插入 
  3. sheet.pictures.add(r'C:\\xxx.jpg'left=sheet.range('A2').lefttop=sheet.range('A2').top, width=100, height=100) 

9.3 XlsxWriter 插入圖片

第一個參數是插入的起始單元格,第二個參數是圖片文件的絕對路徑

 

  1. sheet.insert_image('A1', r'C:\\xxx.jpg'

9.4 openpyxl 插入圖片

openpyxl也可以給Excel中插入指定圖片并修改大小

 

  1. from openpyxl.drawing.image import Image 
  2. img = Image('test.jpg'
  3. newsize = (180, 360)  
  4. img.width, img.height = newsize # 設置圖片的寬和高 
  5. sheet.add_image(img, 'A2') # 往A2單元格插入圖片 

小結

以上就是根據不同 Python 模塊,對常見的 Excel 操作進行對比的全部內容,最終結果匯總如下表所示

 

請注意,本文目的并不是要評出一個最好的庫,僅是從不同角度對不同庫進行對比,希望能夠讓大家了解各個庫所擅長的工作。比如pandas雖然處理方便,但是不能添加圖片修改樣式,openpyxl雖然各種操作都支持,但是速度又相對慢一點等。

只有充分了解不同工具的特點,才能夠在不同的場景下靈活運用不同的方法來高效解決問題!

責任編輯:華軒 來源: 早起Python
相關推薦

2017-12-15 10:00:46

前端框架Vue.js

2021-11-03 16:10:16

RedisJava內存

2013-05-02 13:52:07

2019-04-28 11:06:01

Hbase架構程序員

2019-07-26 11:27:25

MySQLSQL數據庫

2020-02-27 09:50:19

代碼開發工具

2018-11-05 08:10:30

Netty架構模型

2017-10-09 10:42:28

開源HTMLCSS

2018-10-25 09:37:02

Docker入門容器

2021-02-26 10:16:55

鴻蒙HarmonyOS應用開發

2021-05-27 05:30:23

數據分析工具數據可視化

2020-11-20 06:23:53

MacBook

2018-07-16 15:05:43

Redis內存數據庫

2019-12-19 14:23:23

Mac Pro蘋果修復

2021-09-30 07:25:32

數據分析數據分析師工具

2019-05-29 10:04:38

CAP理論 AP

2017-10-17 12:43:17

前端CSS布局

2020-03-05 15:12:51

數據分析人工智能運營

2015-05-11 15:06:00

軟件工程師寫代碼
點贊
收藏

51CTO技術棧公眾號

97精品97| 99久久99九九99九九九| 99久久99久久综合| 日本sm极度另类视频| 国产又大又粗又爽的毛片| 电影在线观看一区二区| 亚洲摸摸操操av| 久久久久久亚洲精品不卡4k岛国| 怡春院在线视频| 伊人成年综合电影网| 国产一区二区成人| 农村末发育av片一区二区| 色婷婷综合久久久中字幕精品久久| 亚洲欧美日韩电影| 免费在线观看一区二区| www黄色网址| 日韩av高清在线观看| 欧美精品video| 综合 欧美 亚洲日本| 日韩一级在线免费观看| 日本激情视频在线观看| 91蝌蚪porny| av免费精品一区二区三区| 日韩欧美国产另类| 亚洲青色在线| 欧美伦理91i| 国产农村妇女精品一区| 日韩欧美四区| 欧美精品一区二区三区四区| 天天色天天综合网| 91精品xxx在线观看| 午夜欧美大尺度福利影院在线看| 国产精品h视频| av在线资源网| www.亚洲精品| 成人av影视在线| 国产喷水吹潮视频www| 人人狠狠综合久久亚洲| 日韩av电影国产| 国产高潮久久久| 欧美精品大片| 久久成人免费视频| 色婷婷在线视频观看| 欧美电影免费观看高清| 在线视频欧美性高潮| 黄色片在线观看免费| 免费av一区| 日韩风俗一区 二区| 欧美xxxx×黑人性爽| 超碰cao国产精品一区二区| 日韩欧美自拍偷拍| 国产男女无遮挡猛进猛出| 亚洲欧洲日韩精品在线| 欧美另类videos死尸| 在线免费av播放| avav成人| 欧美精品v日韩精品v韩国精品v| 性欧美videossex精品| 成人不卡视频| 6080国产精品一区二区| 天堂在线中文在线| www欧美在线观看| 欧美男人的天堂一二区| 想看黄色一级片| 精品一区二区三区亚洲| 精品久久久久久最新网址| 欧洲成人午夜精品无码区久久| 成人另类视频| 日韩av综合中文字幕| 91网站免费视频| 成人在线免费小视频| 久久亚洲欧美日韩精品专区| 青草草在线视频| 亚洲激情黄色| 日本成人黄色片| 中文在线字幕av| 激情都市一区二区| 高清不卡日本v二区在线| 深夜福利视频在线观看| 欧美极品aⅴ影院| 在线观看成人免费| 国产激情视频在线看| 日本丶国产丶欧美色综合| 久久久精品高清| 99re8这里有精品热视频8在线| 亚洲精品电影网| av在线播放中文字幕| 欧美a级片一区| 18一19gay欧美视频网站| 91丨九色丨海角社区| 国产成人综合亚洲网站| 欧美13一14另类| 黄色网址在线免费| 激情av一区二区| 国产成人美女视频| 偷拍视屏一区| 欧美成人免费在线视频| 精品不卡一区二区| 国产麻豆视频一区| 欧美一区二区三区成人久久片 | av色综合久久天堂av综合| 欧美日本韩国在线| 高清电影在线观看免费| 欧美在线观看一二区| 特级特黄刘亦菲aaa级| av一区二区在线播放| 欧美激情久久久久| 中文字幕在线网站| www国产精品av| 大荫蒂性生交片| 成人午夜毛片| 日韩高清a**址| 一级黄色录像视频| 日本欧美一区二区| 久久精品ww人人做人人爽| 午夜伦理在线视频| 欧美日韩一区精品| 精品无码一区二区三区| 亚洲欧美综合国产精品一区| 国产精品久久一区主播| 亚州视频一区二区三区| 亚洲黄色av一区| 在线观看国产福利| 成人影院天天5g天天爽无毒影院 | 九九精品免费视频| 成熟亚洲日本毛茸茸凸凹| 亚洲日本理论电影| 波多野结衣亚洲| 亚洲成年人在线| 久久久久亚洲AV成人| 久久99蜜桃精品| 亚洲精品中文字幕乱码三区不卡| 欧美片第一页| 日韩毛片在线看| 日韩三级视频在线| 成人免费高清在线观看| 成人免费看片'免费看| 视频欧美一区| 欧美成人一区在线| 国产不卡精品视频| 亚洲男同性恋视频| 杨幂一区二区国产精品| 欧美一区影院| 3d动漫啪啪精品一区二区免费| 免费av网站在线看| 欧美日韩一级黄| 看黄色录像一级片| 国产中文字幕精品| 性欧美18一19内谢| 精品国产亚洲一区二区三区在线 | 日韩一级片大全| 日韩va亚洲va欧美va久久| 蜜桃网站成人| av一区在线| 上原亚衣av一区二区三区| 中文在线资源天堂| 亚洲乱码日产精品bd| 污免费在线观看| 国产在线欧美| 精品国产一区二区三区四区vr| 国产777精品精品热热热一区二区| 亚洲精品国产美女| 亚洲欧美一二三区| 国产精品乱人伦一区二区| 亚洲精品国产久| 欧美区国产区| 久久免费99精品久久久久久| 欧美自拍电影| 色老头一区二区三区在线观看| 国产精品久久久久久久久久久久久久久久久久 | 欧美在线观看视频一区二区三区| 欧美巨胸大乳hitomi| 狠狠色丁香婷婷综合| www.av91| 国产九一精品| 91精品美女在线| 好久没做在线观看| 亚洲欧洲自拍偷拍| 国产三级自拍视频| 欧美日韩亚洲视频| 网站永久看片免费| 成人一区二区视频| 能看的毛片网站| 欧美私人啪啪vps| 欧美精品一区在线| www.久久久久爱免| 热门国产精品亚洲第一区在线| 伊人在线视频| 亚洲精品成人久久| 91九色蝌蚪91por成人| 亚洲成人av一区二区| 精品国产aaa| 成人激情小说网站| 婷婷免费在线观看| 韩日视频一区| 伊人色综合影院| 日韩精品丝袜美腿| 91在线精品播放| 69久成人做爰电影| 久久6免费高清热精品| 男人天堂综合| 精品福利在线导航| 亚洲综合一区中| 欧美日韩亚洲高清| 欧美日韩在线观看成人| 国产精品女同互慰在线看| yy6080午夜| 国产精品 欧美精品| 99视频在线免费| 99精品视频免费观看| 日本丰满少妇黄大片在线观看| 国产aⅴ精品一区二区三区久久| 99久久99| 只有精品亚洲| 国产精品成人免费视频| 国产资源在线观看入口av| 久久国产精品影片| 中文日本在线观看| 亚洲欧美日韩精品久久亚洲区| 六月丁香综合网| 欧美一区日本一区韩国一区| 免费在线观看av的网站| 日韩欧美精品中文字幕| 久久精品免费在线| 一区二区视频在线看| 麻豆网址在线观看| 国产精品理论在线观看| 日本成人午夜影院| 久久九九99视频| 醉酒壮男gay强迫野外xx| 成人晚上爱看视频| ass极品水嫩小美女ass| 狠狠色丁香久久婷婷综合丁香| 一区二区三区网址| 美国三级日本三级久久99| 成人在线观看a| 久久精品午夜| 蜜臀久久99精品久久久酒店新书| 国产视频一区在线观看一区免费| 丰满少妇大力进入| 亚洲国产婷婷| 人妻av中文系列| 精品动漫3d一区二区三区免费版| 久久久久久久9| 影音先锋中文字幕一区| 国产3p露脸普通话对白| aa国产精品| 黑森林福利视频导航| 久久国产精品久久w女人spa| 成人免费观看视频在线观看| 亚洲免费在线| 无码日韩人妻精品久久蜜桃| 日韩1区2区3区| 无码人妻精品一区二区三区66| 日韩av不卡一区二区| 依人在线免费视频| 国产乱码精品一区二区三区忘忧草 | 无码人妻精品一区二区蜜桃百度| 一区二区三区午夜探花| 日韩一级片免费视频| 国产视频欧美| 一区二区成人网| 国内精品写真在线观看| 欧美一级片在线免费观看| av亚洲精华国产精华精| 国产手机在线观看| 亚洲天堂2014| 亚洲精品在线观看av| 色久综合一二码| 亚洲视频在线观看一区二区| 日韩三级免费观看| 青青草超碰在线| 少妇高潮久久久久久潘金莲| 97超碰资源站在线观看| 97色在线观看免费视频| 亚洲不卡系列| 99久久久精品免费观看国产| 米奇精品关键词| 性欧美.com| 伊人久久大香线蕉综合热线| 777米奇影视第四色| 九九久久精品视频| 亚洲婷婷在线观看| 欧美国产日韩在线观看| 久久久久久蜜桃| 在线精品视频一区二区三四| 国产精品综合在线| 日韩电视剧在线观看免费网站| eeuss影院www在线观看| 色综合五月天导航| 成人看片网页| 国产精品一区二区三区观看| 国产一区二区三区四区五区传媒 | 日韩一区二区视频在线观看| 三级国产在线观看| 久久久精品在线| 欧美办公室脚交xxxx| 91在线免费看网站| 九九久久婷婷| 久无码久无码av无码| 免费观看成人av| 亚洲精品中文字幕在线播放| 国产精品高潮久久久久无| 丰满少妇乱子伦精品看片| 91精品国产综合久久福利软件| 色猫av在线| 久久久久久国产精品三级玉女聊斋 | 午夜视频一区| 免费看污污网站| 91丨九色丨国产丨porny| 欧美激情国产精品免费| 欧美日韩视频不卡| 国产在线一在线二| 韩国日本不卡在线| 一区二区免费| 成人手机视频在线| 日本一不卡视频| 亚洲午夜久久久久久久久红桃| 亚洲国产欧美日韩另类综合 | 国产午夜精品视频一区二区三区| 人妖欧美一区二区| 国产高潮呻吟久久| 欧美日韩国产中文字幕| 免费观看黄一级视频| 欧美成人激情在线| 不卡一区视频| 一区二区不卡在线视频 午夜欧美不卡' | 久久天堂av综合合色蜜桃网| 九热这里只有精品| 精品国产第一区二区三区观看体验| 中文在线观看免费| 亚洲xxxxx电影| 亚洲91中文字幕无线码三区| 国产精品v日韩精品v在线观看| 日本一区免费视频| 天天天天天天天干| 国产一区二区三区在线观看网站 | 亚洲jizzjizz日本少妇| 久久综合av| 色乱码一区二区三区在线| 中文子幕无线码一区tr| 影音先锋黄色网址| 色妞久久福利网| 日韩免费在线电影| 中文网丁香综合网| 狠狠色狠狠色综合系列| 四虎免费在线视频| 日韩精品一区二区三区在线 | 91精品又粗又猛又爽| 亚洲国产美女搞黄色| 欧美一区,二区| 国产91精品青草社区| 教室别恋欧美无删减版| 天天干天天玩天天操| 亚洲欧洲日韩一区二区三区| 国产精品自偷自拍| 久久免费观看视频| 欧美福利在线播放网址导航| 欧美成人免费高清视频| 国产亚洲精品精华液| 亚洲香蕉在线视频| 九九视频直播综合网| 日本午夜精品| 精品久久久噜噜噜噜久久图片| 国产精品久久99| 国产成人精品一区二三区四区五区| 久久久久久午夜| 国产剧情在线观看一区| 亚洲综合20p| 黄色精品在线看| 日本不卡不卡| 国产伦精品一区| 久久亚洲风情| 日本精品在线免费观看| 欧美mv和日韩mv国产网站| 色偷偷色偷偷色偷偷在线视频| 亚洲国产婷婷香蕉久久久久久99 | 国产精品无码永久免费不卡| 在线亚洲+欧美+日本专区| 成人在线免费看黄| 久久久久久久久四区三区| 精品无人码麻豆乱码1区2区| 日本a在线观看| 视频在线一区二区| 超碰在线成人| 天天综合网日韩| 亚洲一区视频在线| 岛国视频免费在线观看| 91手机在线视频| 日韩精品免费视频人成| 蜜臀久久精品久久久用户群体| 日韩av最新在线| 久久av网站| 日本熟妇人妻中出| 亚洲高清视频的网址| 欧美黑人激情| 欧美激情www| 国产高清成人在线| 国产精品国产精品国产| 97在线观看视频|