python csv轉excel_將Excel文件轉為csv文件的python腳本

將Excel文件轉為csv文件的python腳本

#!/usr/bin/env python

__author__ = "lrtao2010"

'''

Excel文件轉csv文件腳本

需要將該腳本直接放到要轉換的Excel文件同級目錄下

支持xlsx 和 xls 格式

在同級目錄下生成名為excel_to_csv.csv 的文件,采用UTF-8編碼

'''

import xlrd

import csv

import os

#生成的csv文件名

csv_file_name = 'excel_to_csv.csv'

def get_excel_list():

#獲取Excel文件列表

excel_file_list = []

file_list = os.listdir(os.getcwd())

for file_name in file_list:

if file_name.endswith('xlsx') or file_name.endswith('xls'):

excel_file_list.append(file_name)

return excel_file_list

def get_excel_header(excel_name_for_header):

#獲取表頭,并將表頭全部變為小寫

workbook = xlrd.open_workbook(excel_name_for_header)

table = workbook.sheet_by_index(0)

#row_value = table.row_values(0)

row_value = [i.lower() for i in table.row_values(0)]

return row_value

def read_excel(excel_name):

#讀取Excel文件每一行內容到一個列表中

workbook = xlrd.open_workbook(excel_name)

table = workbook.sheet_by_index(0) #讀取第一個sheet

nrows = table.nrows

ncols = table.ncols

# 跳過表頭,從第一行數據開始讀

for rows_read in range(1,nrows):

#每行的所有單元格內容組成一個列表

row_value = []

for cols_read in range(ncols):

#獲取單元格數據類型

ctype = table.cell(rows_read, cols_read).ctype

#獲取單元格數據

nu_str = table.cell(rows_read, cols_read).value

#判斷返回類型

# 0 empty,1 string, 2 number(都是浮點), 3 date, 4 boolean, 5 error

#是2(浮點數)的要改為int

if ctype == 2:

nu_str = int(nu_str)

row_value.append(nu_str)

yield row_value

def xlsx_to_csv(csv_file_name,row_value):

#生成csv文件

with open(csv_file_name, 'a', encoding='utf-8',newline='') as f: #newline=''不加會多空行

write = csv.writer(f)

write.writerow(row_value)

if __name__ == '__main__':

#獲取Excel列表

excel_list = get_excel_list()

#獲取Excel表頭并生成csv文件標題

xlsx_to_csv(csv_file_name,get_excel_header(excel_list[0]))

#生成csv數據內容

for excel_name in excel_list:

for row_value in read_excel(excel_name):

xlsx_to_csv(csv_file_name,row_value)

print('Excel文件轉csv文件結束 ')

?著作權歸作者所有:來自51CTO博客作者lrtao2010的原創作品,如需轉載,請注明出處,否則將追究法律責任

noavatar_middle.gif

lrtao2010

43篇文章,22W+人氣,0粉絲

個人記載,別無它用,如有侵權,請告知改正

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第15章 知識管理

知識分類 顯性知識 教科書、文章、發文等紙質、電子發行轉播的內容 公式,程序,說明書等 隱性知識 語言文字說不清的 習慣,訣竅,信念等 知識管理方法 顯性知識 創造更多的交…

前端多圖片上傳怎么控制順序_Web前端經典面試題有哪些 如何能走向高薪之路...

Web前端經典面試題有哪些?如何能走向高薪之路?Web前端在近幾年是越來越火熱了,很多人看到了前端的高薪資,更看到了前端行業的發展前景,所以紛紛投入到學習前端技術學習中來。下面給大家總結整理一些Web前端經典面試題&…

第17章 戰略管理

組織戰略 戰略目標 出發點 戰略方針 基本依據 戰略實施能力 內部外部 戰略措施 重要保障 戰略分解過程 自上而下 戰略實施四個階段 戰略啟動階段 戰略計劃實施階段 戰略運作階段 戰略控制與評估階段 組…

設計幾個簡單的匯編函數

原創 已知符號函數 Y 1 &#xff08;當X>0&#xff09;, 0 &#xff08;當X0&#xff09;&#xff0c;-1 &#xff08;當X<0&#xff09; 設任意給定的X&#xff08;-128≤X≤127&#xff09;存放在DTX單元&#xff0c;計算函數Y值&#xff0c;要求存放在DTY單元中。 采用…

第16章 變更管理

變更原因 產品范圍&#xff08;成果&#xff09;定義的過失或疏忽 項目范圍&#xff08;工作&#xff09;定義的過失或疏忽 增值變更&#xff0c;客戶提了新需求 應對風險的緊急計劃或回避計劃 項目執行過程與基準要求不一致帶領的被動調整 外部事件 …

python2.7是什么_python2.7是什么

pyton2.7是python在2010年發布的一個版本。Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言&#xff0c;具有很強的可讀性&#xff0c;相比其他語言經常使用英文關鍵字&#xff0c;其他語言的一些標點符號&#xff0c;它具有比其他語言更有特色語法結構…

iOS12

ios 12 中的新特性。 已經有很多文章寫得很好&#xff0c;這里不再贅述&#xff0c;直接給大家幾個傳送門&#xff1a; https://sspai.com/post/47168 https://post.smzdm.com/p/771705/ https://www.jianshu.com/p/dde4fef41c4b https://www.jianshu.com/p/8b49fc037a89 http:…

解決windows指紋登錄不靈問題

原因&#xff1a;不是指紋設備問題&#xff0c;是windows把指紋設備關了。 解決方法&#xff1a;進入設備管理器&#xff0c;找到生物指紋&#xff0c;按下圖操作

DEVEXPRESS---TREELIST的使用

最近正在做一個信息收發功能&#xff0c;需要使用TREELIST控件&#xff0c;但又沒接觸過&#xff0c;隨即被卡2小時。。。。 主要卡點在于如何實現父節點選擇后級聯選擇子節點。 在CSDN上找到文章&#xff1a;https://blog.csdn.net/jiankunking/article/details/24231075轉載于…

OSI七層模型白話解釋

各層設備 應用層……………….計算機&#xff1a;應用程序&#xff0c;如FTP&#xff0c;SMTP&#xff0c;HTTP 表示層 ……………….計算機&#xff1a;編碼方式&#xff0c;圖像編解碼、URL字段傳輸編碼 會話層 ……………….計算機&#xff1a;建立會話&#xff0c;SESSI…

利用類定義一個指針會調用默認構造函數嗎_C++的拷貝構造函數

拷貝構造函數是一種特殊的構造函數&#xff0c;它在創建對象時&#xff0c;是使用同一類中之前創建的對象來初始化新創建的對象。拷貝構造函數通常用于&#xff1a;通過使用另一個同類型的對象來初始化新創建的對象。復制對象把它作為參數傳遞給函數。復制對象&#xff0c;并從…

開發應用層的需要了解 framework層嗎?---不需要!!!!

寫于2015年12月3日 不同的android版本&#xff0c;不同的framework實現&#xff0c;framework有近2億行代碼&#xff0c;版本越高&#xff0c;代碼行數越大&#xff0c;這個過程是很痛苦的。所以不要去學習和閱讀framework的源代碼。 閱讀它的源代碼&#xff0c;還不如去學英…

51CTO會員開通成功!開森!

很好&#xff0c;是理想中的學習平臺&#xff0c;果斷買了&#xff01;^_^ 開森ing 轉載于:https://blog.51cto.com/13601545/2324935

一個請求多個響應_一個TCP連接到底可以發多少個HTTP請求?

曾經有這么一道面試題&#xff1a;從 URL 在瀏覽器被被輸入到頁面展現的過程中發生了什么&#xff1f;相信大多數準備過的同學都能回答出來&#xff0c;但是如果繼續問&#xff1a;收到的 HTML 如果包含幾十個圖片標簽&#xff0c;這些圖片是以什么方式、什么順序、建立了多少連…

手機定位功能為什么打開WiFi(不連接) 就會非常的準 ?如果WiFi 遷到其它地方去了呢?

Wifi定位地圖在需要定位的時候&#xff0c;一般會優先用GPS的定位結果&#xff0c;一般來說GPS最準。如果沒有GPS的定位結果的話&#xff0c;那一般就退而求其次用Wifi的定位結果。 原理是這樣的&#xff1a; 1、手機收集它能夠搜索到的Wifi的信息&#xff1b; 2、提交Wifi信…

JxBrowser概述與簡單應用

Q&#xff1a;JxBrowser是什么&#xff1f; JxBrowser是一個跨平臺的Java庫&#xff0c;允許將基于Google Chromium的Web瀏覽器組件集成到Java Swing / AWT / JavaFX應用程序中。使用JxBrowser&#xff0c;您可以將輕量級Swing / JavaFX組件嵌入到Java應用程序中&#xff0c;以…

我的達內Java培訓經歷

我當時2009年參加達內培訓是在學校里,達內與我們學校合作。當時培訓班只開了一個班,有位班主任,因為是第一屆,學生也少,不到20個,所以不是老師現場教的,看視頻學習的,視頻是錄播的。班主任負責培訓班日常管理工作,和技術答疑。培訓視頻是投影儀放。當時培訓java基礎的…

小米大數據:借助Apache Kylin打造高效、易用的一站式OLAP解決方案

如今的小米不僅是一家手機公司&#xff0c;更是一家大數據與人工智能公司。隨著小米公司各項業務的快速發展&#xff0c;數據中的商業價值也愈發突顯。而與此同時&#xff0c;各業務團隊在數據查詢、分析等方面的壓力同樣正在劇增。因此&#xff0c;為幫助公司各業務線解決這些…

舊電腦升級Win11

2014年的聯想Y430P升級成功 升級很簡單 第一步&#xff1a;下載win11系統安裝包&#xff0c;下載地址&#xff1a;系統之家 - Win11系統 第二步&#xff1a;下載KMS激活工具&#xff0c;下載地址&#xff1a;https://www.jb51.net/softs/668522.htmlhttps://www.jb51.net/sof…

進程池的用法

apply() 函數原型&#xff1a; apply(func[, args()[, kwds{}]]) 該函數用于傳遞不定參數&#xff0c;主進程會被阻塞直到函數執行結束&#xff08;不建議使用&#xff0c;并且3.x以后不在出現&#xff09;。 apply_async() 函數原型&#xff1a; apply_async(func[, args()[, …