操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    如何將xls文件批量轉(zhuǎn)為xlsx文件,網(wǎng)上有很多所謂的“方法”,也有很多人想當(dāng)然的認(rèn)為這是很容易的事情?,F(xiàn)在,我就以50個(gè)xls文件為例,來(lái)驗(yàn)證下網(wǎng)上的那些方法到底效果如何!

    方法1:人工批量轉(zhuǎn)換

    用Excel或wps表格打開(kāi)每個(gè)xls文件,然后另存為xlsx格式的文件。這是種很笨的方法,不到萬(wàn)不得已,實(shí)在沒(méi)必要用,因?yàn)樘臅r(shí)。這只是50個(gè)xls文件,如果有幾百個(gè)xls文件呢?也人工一個(gè)個(gè)轉(zhuǎn)換嗎?不現(xiàn)實(shí)。

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

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

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

    有的人會(huì)說(shuō),可以使用charde模塊來(lái)識(shí)別xls文件的編碼??!

    我們看下面的代碼的代碼及其部分結(jié)果:

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

    部分結(jié)果

    可以看到,有的xls文件,無(wú)法識(shí)別出編碼方式,有的識(shí)別為ascii,有的識(shí)別出的編碼還會(huì)存在confidence(置信度即概率)的問(wèn)題??傊?,即使使用chardet識(shí)別xls文件,也存在無(wú)法識(shí)別或者識(shí)別的置信度問(wèn)題,也無(wú)法在pandas.read_csv()函數(shù)中設(shè)置可變變量的參數(shù)或使用switch-case或if-elif等多重選擇來(lái)讀取可能多種編碼的批量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文件,成功批量轉(zhuǎn)為xlsx文件。

    實(shí)測(cè)結(jié)果表明,這種方法是有效的。進(jìn)一步說(shuō),批量轉(zhuǎn)為xlsx文件后,再使用pandas.read_excel()和to_csv()函數(shù),可以批量將xls轉(zhuǎn)換后的xlsx文件,再轉(zhuǎn)換為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('開(kāi)始處理表:',file.name)
        save_file='e:/fqb/4/' + file.stem + '.xlsx'
        xls2xlsx(file, save_file)
        
    print('全部完成')

    運(yùn)行以上代碼后,有的xls文件轉(zhuǎn)換正常,但是有的xls文件卻報(bào)錯(cuò)了,如下所示:

    報(bào)錯(cuò)信息1

    報(bào)錯(cuò)信息2

    我們看到,這種方法并不能保證批量有效轉(zhuǎn)換,因?yàn)樵摲椒▽?duì)有的xls是無(wú)效的。

    方法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('開(kāi)始處理表:',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('全部完成')

    安裝指定模塊后,運(yùn)行以上代碼,有的xls文件可以正常轉(zhuǎn)換,有的xls報(bào)錯(cuò),如下所示:

    報(bào)錯(cuò)信息1

    報(bào)錯(cuò)信息2

    這種方法與方法4存在同樣的問(wèn)題:并不能保證批量有效轉(zhuǎn)換,因?yàn)樵摲椒▽?duì)有的xls是無(wú)效的。

    方法6:使用xls2xlsx模塊

    首先安裝 pip install xls2xlsx和 pip install xlrd

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

    運(yùn)行以上代碼后,不僅運(yùn)行速度非常慢,而且出現(xiàn)以下報(bào)錯(cuò):

    報(bào)錯(cuò)信息

    所以,這種方法也無(wú)法有效地將所有xls文件批量轉(zhuǎn)換為xlsx文件。

    方法7:使用xlrd和xlwt模塊

    from pathlib import Path
    import xlrd
    import xlwt
    
    for file in Path('e:/fqb/3/').glob('*.xls'):
        print('開(kāi)始處理表:',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('全部完成')

    運(yùn)行以上代碼后,有的xls文件可以正常轉(zhuǎn)換,但有的xls文件報(bào)錯(cuò),如下所示:

    報(bào)錯(cuò)信息1

    報(bào)錯(cuò)信息2

    這種方法同樣無(wú)法進(jìn)行批量有效轉(zhuǎn)換,與方法4和5和6一樣。

    最后總結(jié)

    以上使用了7種方法來(lái)將xls文件轉(zhuǎn)換為xlsx文件,最后的結(jié)果是,只有pywin32模塊能夠一次性批量轉(zhuǎn)換,其它6種方法均無(wú)法有效進(jìn)行批量轉(zhuǎn)換。


    在工作中,人事、財(cái)務(wù)和庫(kù)管經(jīng)常需要管理很多表格檔案。如果不去整理的話,急需使用時(shí)會(huì)大半天找不到文件。其實(shí)只需幾個(gè)步驟,就可以用Excel制作出屬于自己的文件檔案管理系統(tǒng)。主要的思路是新建一個(gè)單獨(dú)的excel表格來(lái)管理這些文件,然后批量創(chuàng)建超鏈接,點(diǎn)擊超鏈接即可打開(kāi)相應(yīng)的文件,主要效果如下圖:

    快速添加分類名稱

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

    1.添加標(biāo)題行,打開(kāi)篩選器

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

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

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

    3.重復(fù)步驟2,分別對(duì)ppt文件和pdf文件進(jìn)行篩選

    按照類別查看文件列表

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

    批量創(chuàng)建超鏈接

    在C列創(chuàng)建超鏈接,有了超鏈接,點(diǎn)擊即可查看對(duì)應(yīng)的圖片、excel文件或者其他文件。主要用到的函數(shù)是HYPERLINK函數(shù)。

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

    我們分析一下C2的公式,就是兩個(gè)參數(shù):

    =HYPERLINK("文件所處的文件夾路徑/"&A2,"點(diǎn)擊打開(kāi)")

    那么我們?nèi)绾潍@得自己文件所處的路徑呢?

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

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

    2.&A2的含義

    &的作用是連接字符,因?yàn)槲覀兘?jīng)過(guò)第一步已經(jīng)得到了文件所處文件夾的路徑,但是超鏈接必須要精確到哪個(gè)文件,所以最后要連接上文件名。A列有對(duì)應(yīng)的文件名稱,所以直接連接對(duì)應(yīng)單元格的值就行。

    3.“點(diǎn)擊打開(kāi)”的含義

    超鏈接會(huì)顯示成“點(diǎn)擊打開(kāi)”這四個(gè)字,這是自定義的,如果你設(shè)置成“超鏈接”,在表格中,就會(huì)顯示成“超鏈接”,如下圖:

    4.按住自動(dòng)填充手柄,往下拉動(dòng),就可以自動(dòng)創(chuàng)建超鏈接

    注意點(diǎn):

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

    2.如果點(diǎn)擊超鏈接之后,彈出安全提示彈窗,請(qǐng)點(diǎn)擊確認(rèn)授權(quán),因?yàn)椴煌浖M(jìn)行了鏈接,所以會(huì)出現(xiàn)這個(gè)彈窗。

    操作是不是非常簡(jiǎn)單,但是效果非常震撼?

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

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

    4

    批量獲得文件名清單

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

    點(diǎn)擊“文件”-另存為“獲得文件名.bat”文件。

    把這個(gè)文件移動(dòng)到需要獲取文件名的文件所在文件夾中,雙擊運(yùn)行,就會(huì)生成一個(gè)名為“文件名列表.CSV”的文件,打開(kāi)該文件,把“文件名列表.CSV”和“獲得文件名.bat”刪掉,就是文件夾所有的文件名清單。

    注意點(diǎn):

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

    2.如果想獲得文件夾A中所有文件名,但是文件夾A中又有文件夾B,必須將“獲得文件名.bat”再?gòu)?fù)制到文件夾B下,雙擊運(yùn)行,這樣才可以獲得所有文件名。

    3.這個(gè)只適合windows系統(tǒng)

    5

    小結(jié)

    非常簡(jiǎn)單實(shí)用的一個(gè)文件管理系統(tǒng),幾乎每個(gè)人在工作中都需要用到。這個(gè)系統(tǒng)實(shí)現(xiàn)了批量獲得文件名、分類查看文件以及創(chuàng)建超鏈接的功能。同時(shí)可以根據(jù)自己公司的需求,添加新的功能,完善這個(gè)文件管理系統(tǒng)

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

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

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有