Ngày và thời gian trong Excel được thể hiện bằng các số thực, ví dụ, ngày 1 tháng 1 năm 2013 12:00 PM, được đại diện bởi số 41275.5.
Phần số nguyên của số lưu trữ số ngày kể từ kỷ nguyên và phần phân số lưu trữ tỷ lệ phần trăm trong ngày.
Một ngày hoặc thời gian trong Excel cũng giống như bất kỳ số nào khác. Để hiển thị số dưới dạng ngày, bạn phải áp dụng định dạng số Excel cho nó. Dưới đây là một số ví dụ:
import xlsxwriter workbook = xlsxwriter.Workbook['date_examples.xlsx'] worksheet = workbook.add_worksheet[] # Widen column A for extra visibility. worksheet.set_column['A:A', 30] # A number to convert to a date. number = 41333.5 # Write it as a number without formatting. worksheet.write['A1', number] # 41333.5 format2 = workbook.add_format[{'num_format': 'dd/mm/yy'}] worksheet.write['A2', number, format2] # 28/02/13 format3 = workbook.add_format[{'num_format': 'mm/dd/yy'}] worksheet.write['A3', number, format3] # 02/28/13 format4 = workbook.add_format[{'num_format': 'd-m-yyyy'}] worksheet.write['A4', number, format4] # 28-2-2013 format5 = workbook.add_format[{'num_format': 'dd/mm/yy hh:mm'}] worksheet.write['A5', number, format5] # 28/02/13 12:00 format6 = workbook.add_format[{'num_format': 'd mmm yyyy'}] worksheet.write['A6', number, format6] # 28 Feb 2013 format7 = workbook.add_format[{'num_format': 'mmm d yyyy hh:mm AM/PM'}] worksheet.write['A7', number, format7] # Feb 28 2013 12:00 PM workbook.close[]
Để làm việc với ngày và thời gian dễ dàng hơn một chút, mô -đun XLSXWriter cung cấp phương thức write_datetime[]
để viết ngày ở định dạng thư viện tiêu chuẩn datetime
.
Cụ thể, nó hỗ trợ các đối tượng DateTime thuộc loại ____10,
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']1,
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']2 và
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']3.
Có nhiều cách để tạo các đối tượng DateTime, ví dụ như phương thức
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']4:
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']
Xem tài liệu datetime
cho các phương thức tạo ngày/thời gian khác.
Như đã giải thích ở trên, bạn cũng cần tạo và áp dụng định dạng số để định dạng ngày/giờ:
date_format = workbook.add_format[{'num_format': 'd mmmm yyyy'}] worksheet.write_datetime['A1', date_time, date_format] # Displays "23 January 2013"
Dưới đây là một ví dụ dài hơn hiển thị cùng một ngày ở một số định dạng khác nhau:
from datetime import datetime import xlsxwriter # Create a workbook and add a worksheet. workbook = xlsxwriter.Workbook['datetimes.xlsx'] worksheet = workbook.add_worksheet[] bold = workbook.add_format[{'bold': True}] # Expand the first columns so that the dates are visible. worksheet.set_column['A:B', 30] # Write the column headers. worksheet.write['A1', 'Formatted date', bold] worksheet.write['B1', 'Format', bold] # Create a datetime object to use in the examples. date_time = datetime.strptime['2013-01-23 12:30:05.123', '%Y-%m-%d %H:%M:%S.%f'] # Examples date and time formats. date_formats = [ 'dd/mm/yy', 'mm/dd/yy', 'dd m yy', 'd mm yy', 'd mmm yy', 'd mmmm yy', 'd mmmm yyy', 'd mmmm yyyy', 'dd/mm/yy hh:mm', 'dd/mm/yy hh:mm:ss', 'dd/mm/yy hh:mm:ss.000', 'hh:mm', 'hh:mm:ss', 'hh:mm:ss.000', ] # Start from first row after headers. row = 1 # Write the same date and time using each of the above formats. for date_format_str in date_formats: # Create a format for the date or time. date_format = workbook.add_format[{'num_format': date_format_str, 'align': 'left'}] # Write the same date using different formats. worksheet.write_datetime[row, 0, date_time, date_format] # Also write the format string for comparison. worksheet.write_string[row, 1, date_format_str] row += 1 workbook.close[]
Định dạng ngày mặc định
Trong một số trường hợp nhất định, bạn có thể muốn áp dụng định dạng ngày mặc định khi viết các đối tượng DateTime, ví dụ, khi xử lý một hàng dữ liệu bằng
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']6.
Trong những trường hợp này, có thể chỉ định chuỗi định dạng ngày mặc định bằng cách sử dụng tùy chọn Trình xây dựng
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']7
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']8:
workbook = xlsxwriter.Workbook['datetimes.xlsx', {'default_date_format': 'dd/mm/yy'}] worksheet = workbook.add_worksheet[] date_time = datetime.now[] worksheet.write_datetime[0, 0, date_time] # Formatted as 'dd/mm/yy' workbook.close[]
Xử lý múi giờ
Excel không hỗ trợ thời gian trong DateTimes/Times, do đó, không có bất kỳ cách nào không an toàn mà XLSXWriter có thể ánh xạ DateTime nhận thức về thời gian Python thành một DateTime Excel. Vì vậy, người dùng nên xử lý thời gian theo một cách nào đó có ý nghĩa theo yêu cầu của họ. Thông thường, điều này sẽ yêu cầu một số chuyển đổi theo thời gian điều chỉnh múi giờ và việc loại bỏ
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']9 khỏi đối tượng DateTime để có thể chuyển đến
write_datetime[]
:utc_datetime = datetime[2016, 9, 23, 14, 13, 21, tzinfo=utc] naive_datetime = utc_datetime.replace[tzinfo=None] worksheet.write_datetime[row, 0, naive_datetime, date_format]
Ngoài ra, tùy chọn cấu trúc
date_time = datetime.datetime.strptime['2013-01-23', '%Y-%m-%d']7
date_format = workbook.add_format[{'num_format': 'd mmmm yyyy'}] worksheet.write_datetime['A1', date_time, date_format] # Displays "23 January 2013"2 có thể được sử dụng để loại bỏ múi giờ từ các giá trị DateTime được truyền đến
write_datetime[]
. Mặc định là date_format = workbook.add_format[{'num_format': 'd mmmm yyyy'}] worksheet.write_datetime['A1', date_time, date_format] # Displays "23 January 2013"4. Để kích hoạt tùy chọn này sử dụng:
workbook = xlsxwriter.Workbook[filename, {'remove_timezone': True}]
Khi làm việc với Python Pandas và XLSXWriter, bạn có thể chuyển đối số như sau:Working with Python Pandas and XlsxWriter you can pass the argument as follows:
writer = pd.ExcelWriter['pandas_example.xlsx', engine='xlsxwriter', options={'remove_timezone': True}]