Cố gắng phân tích cú pháp và tệp XLSX bằng đá quý roo trong tập lệnh ruby.Làm thế nào để chuyển đổi MS excel ngày từ phao sang định dạng ngày trong Ruby?
Trong ngày excel được lưu trữ dưới dạng phao hoặc số nguyên theo định dạng DDDDD.ttttt, tính từ 1900-01-00 (00 no 01)
. Vì vậy, để chuyển đổi một ngày như 40396 - bạn sẽ mất 1900-01-00 + 40396
và bạn sẽ nhận được 2010-10-15, nhưng tôi nhận được 2010-08-08.
Tôi đang sử dụng active_support/thời gian để làm tính toán như sau:
Time.new("1900-01-01") + 40396.days
Tôi có làm tính toán của tôi sai hay là có một lỗi trong hỗ trợ tích cực?
Tôi đang chạy ruby 1.9.3-MRI trên Windows 7 + mới nhất active_support đá quý (3.2.1)
EDIT
Tôi đã nhìn vào các tập tin cũ trong Excel với dữ liệu sai - kịch bản/bàn điều khiển của tôi đã kéo dữ liệu đúng - do đó sự nhầm lẫn của tôi - tôi đã làm mọi thứ đúng, ngoại trừ việc sử dụng đúng tệp !!!! Chết tiệt tất cả các nighters!
Nhờ mọi người trả lời, tôi sẽ giữ câu hỏi ở đây trong trường hợp ai đó cần thông tin về cách chuyển đổi ngày từ excel bằng ruby.
Ngoài ra đối với bất kỳ ai khác tham gia vào - đá quý bảng tính KHÔNG hỗ trợ đọc tệp XLSX tại thời điểm này (v 0.7.1) đúng cách - vì vậy tôi đang sử dụng roo để đọc và viết lách.
Tính tương thích kéo dài trở lại 1/1/1900, vì lịch của Excel cũng có 1900 là năm nhuận. – phoog
Đủ công bằng, @phoog, kể từ khi câu hỏi đề cập đến Excel cụ thể, nhưng tôi cũng đã đề cập đến các bảng tính khác và chúng không mở rộng khả năng tương thích của chúng cho đến nay. Ruby cũng không, dĩ nhiên. Vì vậy, hiệu quả, ngày 0 vẫn là 1899-12-30. –
Chỉ cần bỏ qua toàn bộ điều - tôi đã nhầm lẫn - nguyên nhân trong kịch bản của tôi tôi đã kéo tập tin đúng, nhưng trong Excel tôi đã có một tập tin cũ mở với sai ngày. !!!!! Vẫn cảm ơn bạn đã trả lời. – konung