欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    如何將xls文件批量轉為xlsx文件,網上有很多所謂的“方法”,也有很多人想當然的認為這是很容易的事情。現在,我就以50個xls文件為例,來驗證下網上的那些方法到底效果如何!

    方法1:人工批量轉換

    用Excel或wps表格打開每個xls文件,然后另存為xlsx格式的文件。這是種很笨的方法,不到萬不得已,實在沒必要用,因為太耗時。這只是50個xls文件,如果有幾百個xls文件呢?也人工一個個轉換嗎?不現實。

    方法2:使用pandas的read_csv()和to_csv()批量轉換

    要讀取xls文件,pandas使用的是read_csv()函數,不是read_excel()函數。

    但是使用pathlib模塊和pandas.read_csv()函數批量讀取xls時,會遇到xls文件編碼encoding的問題,都是xls文件,但是其編碼卻很多時候不一樣,有的xls是utf-8編碼,有的xls是ansi編碼,有的xls是gbk編碼,等等。所以,無法在read_csv()函數中設置統一的編碼來讀取可能存在很多種編碼的xls文件。

    有的人會說,可以使用charde模塊來識別xls文件的編碼啊!

    我們看下面的代碼的代碼及其部分結果:

    import chardet
    for file in Path('e:/fqb/3/').glob('*.xls'):
        with open(file, 'rb') as f:
            result=chardet.detect(f.read())
        print(result)

    部分結果

    可以看到,有的xls文件,無法識別出編碼方式,有的識別為ascii,有的識別出的編碼還會存在confidence(置信度即概率)的問題。總之,即使使用chardet識別xls文件,也存在無法識別或者識別的置信度問題,也無法在pandas.read_csv()函數中設置可變變量的參數或使用switch-case或if-elif等多重選擇來讀取可能多種編碼的批量xls文件。

    方法3:使用pywin32模塊

    from win32com import client
    from pathlib import Path
    import pandas as pd
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        save_dir='e:/fqb/4/'+ file.stem + '.xlsx'
        file=file.as_posix()
        print(file)
        excel=client.Dispatch('Excel.Application')
        excel.Visible=False
        excel.DisplayAlerts=False
        wb=excel.Workbooks.Open(file)
        wb.SaveAs(save_dir, FileFormat=51)
        wb.Close()
        excel.Application.Quit()
    print('全部完成')

    以上代碼,可以將不同編碼的xls文件,成功批量轉為xlsx文件。

    實測結果表明,這種方法是有效的。進一步說,批量轉為xlsx文件后,再使用pandas.read_excel()和to_csv()函數,可以批量將xls轉換后的xlsx文件,再轉換為csv文件。

    方法4:使用xlrd和openpyxl模塊

    import xlrd
    from openpyxl.workbook import Workbook
    from pathlib import Path
    
    def xls2xlsx(xls_file, xlsx_file):
        wb=xlrd.open_workbook(xls_file)
        index=0
        nrows, ncols=0, 0
        while nrows * ncols==0:
            sheet=wb.sheet_by_index(index)
            nrows=sheet.nrows
            ncols=sheet.ncols
            index=index + 1
        
        wb2=Workbook()
        sheet_new=wb2.create_sheet('sheet1',0)
        for row in range(0, nrows):
            for col in range(0,ncols):
                sheet_new.cell(row+1, col+1).value=sheet.cell_value(row,col)
        wb2.save(xlsx_file)
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        print('開始處理表:',file.name)
        save_file='e:/fqb/4/' + file.stem + '.xlsx'
        xls2xlsx(file, save_file)
        
    print('全部完成')

    運行以上代碼后,有的xls文件轉換正常,但是有的xls文件卻報錯了,如下所示:

    報錯信息1

    報錯信息2

    我們看到,這種方法并不能保證批量有效轉換,因為該方法對有的xls是無效的。

    方法5:使用pyexcel模塊

    首先安裝以下模塊

    pip install pyexcel
    pip install pyexcel-xls
    pip install pyexcel-xlsx
    pip install pyexcel-xlsxw
    from pathlib import Path
    import pyexcel
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        print('開始處理表:',file.name)
        save_file='e:/fqb/4/' + file.stem + '.xlsx'
        file=file.as_posix()
        pyexcel.save_book_as(file_name=file, dest_file_name=save_file)
     
    print('全部完成')

    安裝指定模塊后,運行以上代碼,有的xls文件可以正常轉換,有的xls報錯,如下所示:

    報錯信息1

    報錯信息2

    這種方法與方法4存在同樣的問題:并不能保證批量有效轉換,因為該方法對有的xls是無效的。

    方法6:使用xls2xlsx模塊

    首先安裝 pip install xls2xlsx和 pip install xlrd

    from pathlib import Path
    import xls2xlsx
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        print('開始處理表:',file.name)
        save_file='e:/fqb/4/' + file.stem + '.xlsx'
        f=xls2xlsx.XLS2XLSX(file.as_posix())
        f.to_xlsx(save_file)
        
    print('全部完成')

    運行以上代碼后,不僅運行速度非常慢,而且出現以下報錯:

    報錯信息

    所以,這種方法也無法有效地將所有xls文件批量轉換為xlsx文件。

    方法7:使用xlrd和xlwt模塊

    from pathlib import Path
    import xlrd
    import xlwt
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        print('開始處理表:',file.name)
        wb=xlrd.open_workbook(file)
        wb2=xlwt.Workbook()
        for name in wb.sheet_names():
            sheet=wb2.add_sheet(name)
            for row in range(wb.sheet_by_name(name).nrows):
                for col in range(wb.sheet_by_name(name).ncols):
                    sheet.write(row, col, wb.sheet_by_name(name).cell(row,col).value)
        save_file='e:/fqb/4/' + file.stem + '.xlsx'
        wb2.save(save_file)
        
    print('全部完成')

    運行以上代碼后,有的xls文件可以正常轉換,但有的xls文件報錯,如下所示:

    報錯信息1

    報錯信息2

    這種方法同樣無法進行批量有效轉換,與方法4和5和6一樣。

    最后總結

    以上使用了7種方法來將xls文件轉換為xlsx文件,最后的結果是,只有pywin32模塊能夠一次性批量轉換,其它6種方法均無法有效進行批量轉換。


    在工作中,人事、財務和庫管經常需要管理很多表格檔案。如果不去整理的話,急需使用時會大半天找不到文件。其實只需幾個步驟,就可以用Excel制作出屬于自己的文件檔案管理系統。主要的思路是新建一個單獨的excel表格來管理這些文件,然后批量創建超鏈接,點擊超鏈接即可打開相應的文件,主要效果如下圖:

    快速添加分類名稱

    下面是一份文件清單,其中包括了Excel文件,PPT文件和PDF文件。我們現在需要給每一份文件添加分類名稱:Excel/PPT/電子書。

    1.添加標題行,打開篩選器

    在第一行之前插入新的一行作為標題行,分別起名為“文件名”和“備注”。單擊右鍵打開篩選器。

    2.篩選出所有的excel文件,輸入分類名稱

    按照不同的文件類型,在篩選彈窗中輸入字符進行篩選。例如excel文件的名稱包括“.xlsx”和“.xls”字符,分別輸入對應的字符搜索即可。篩選完成后全選備注列,輸入分類名稱,下面以excel作為示范,按住”ctrl+enter”,填充所有選中的單元格

    3.重復步驟2,分別對ppt文件和pdf文件進行篩選

    按照類別查看文件列表

    有時需要按照文件的類別分類查看文件,這時備注列就有大作用啦。點擊備注下方的三角形,彈出篩選彈窗。這里可以查看我們前面設置好的分類名稱,勾選需要查看的文件類型,點擊確定即可。如果需要查看全部文件,選中“全選”即可。

    批量創建超鏈接

    在C列創建超鏈接,有了超鏈接,點擊即可查看對應的圖片、excel文件或者其他文件。主要用到的函數是HYPERLINK函數。

    1.在C2單元格中輸入公式

    我們分析一下C2的公式,就是兩個參數:

    =HYPERLINK("文件所處的文件夾路徑/"&A2,"點擊打開")

    那么我們如何獲得自己文件所處的路徑呢?

    找到自己文件所處的文件夾,單擊右鍵,在彈窗中選擇“屬性”,在屬性彈窗中,復制“位置”后面的字符。

    將復制到的路徑,粘貼到excel的一個單元格中,并且在路徑最后加上“/”,作為備用。我得到的路徑如下圖,紅框中“/”一定要加上:

    2.&A2的含義

    &的作用是連接字符,因為我們經過第一步已經得到了文件所處文件夾的路徑,但是超鏈接必須要精確到哪個文件,所以最后要連接上文件名。A列有對應的文件名稱,所以直接連接對應單元格的值就行。

    3.“點擊打開”的含義

    超鏈接會顯示成“點擊打開”這四個字,這是自定義的,如果你設置成“超鏈接”,在表格中,就會顯示成“超鏈接”,如下圖:

    4.按住自動填充手柄,往下拉動,就可以自動創建超鏈接

    注意點:

    1.所有的文件都必須要在同一個文件夾中,不然就不能用自動填充功能;

    2.如果點擊超鏈接之后,彈出安全提示彈窗,請點擊確認授權,因為不同軟件進行了鏈接,所以會出現這個彈窗。

    操作是不是非常簡單,但是效果非常震撼?

    當然,如果你需要按照前面的步驟在Excel表格中管理文檔,首先需要一份文件清單。公司里有成百上千的文件,難道需要一個個輸入嗎?這樣的效率超低而且非常容易出錯,如果名字錯誤,那鏈接就會失效。

    最后,告訴大家一個快速提取文件名到excel的方法,不管有多少文件,一鍵獲得所有文件名。

    4

    批量獲得文件名清單

    在桌面新建一個文本文檔,寫入“DIR *.* /B >文件名列表.CSV”代碼。如下所示:

    點擊“文件”-另存為“獲得文件名.bat”文件。

    把這個文件移動到需要獲取文件名的文件所在文件夾中,雙擊運行,就會生成一個名為“文件名列表.CSV”的文件,打開該文件,把“文件名列表.CSV”和“獲得文件名.bat”刪掉,就是文件夾所有的文件名清單。

    注意點:

    1.必須把“獲得文件名.bat”文件放到需要獲取文件名的文件所在文件夾中;

    2.如果想獲得文件夾A中所有文件名,但是文件夾A中又有文件夾B,必須將“獲得文件名.bat”再復制到文件夾B下,雙擊運行,這樣才可以獲得所有文件名。

    3.這個只適合windows系統

    5

    小結

    非常簡單實用的一個文件管理系統,幾乎每個人在工作中都需要用到。這個系統實現了批量獲得文件名、分類查看文件以及創建超鏈接的功能。同時可以根據自己公司的需求,添加新的功能,完善這個文件管理系統

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有