Tôi có dữ liệu trong một bảng tính Excel với các giá trị như thế này:Dán từ Excel vào C# ứng dụng, duy trì độ chính xác đầy đủ
- 0,69491375
- 0,31220394
Các tế bào được định dạng như Tỷ lệ phần trăm, và đặt để hiển thị hai chữ số thập phân. Vì vậy, chúng xuất hiện trong Excel như:
- 69,49%
- 31.22%
tôi có một chương trình C# mà phân tích dữ liệu này ra khỏi Clipboard
.
var dataObj = Clipboard.GetDataObject();
var format = DataFormats.CommaSeparatedValue;
if (dataObj != null && dataObj.GetDataPresent(format))
{
var csvData = dataObj.GetData(format);
// do something
}
Vấn đề là csvData
chứa các giá trị hiển thị từ Excel, ví dụ: '69 .49% 'và '31 0,22%'. Nó không chứa độ chính xác đầy đủ của các chữ số thập phân thêm.
Tôi đã thử bằng cách sử dụng khác nhau DataFormats
giá trị khác nhau, nhưng dữ liệu duy nhất chứa các giá trị hiển thị từ Excel, ví dụ:
DataFormats.Dif
DataFormats.Rtf
DataFormats.UnicodeText
- , vv
Khi thử nghiệm, tôi đã cài đặt LibreOffice C alc và sao chép/dán các ô tương tự từ Excel vào Calc. Calc giữ lại độ chính xác đầy đủ của dữ liệu thô.
Vì vậy, Excel rõ ràng đặt dữ liệu này ở đâu đó mà các chương trình khác có thể truy cập. Làm thế nào tôi có thể truy cập nó từ ứng dụng C# của tôi?
Chỉnh sửa - Các bước tiếp theo.
Tôi đã tải xuống mã nguồn của LibreOffice Calc và sẽ tìm hiểu xem tôi có thể tìm hiểu cách chúng có được ngữ cảnh đầy đủ của dữ liệu được sao chép từ Excel hay không.
Tôi cũng đã thực hiện cuộc gọi GetFormats()
trên đối tượng dữ liệu được trả lại từ khay nhớ tạm và có danh sách 24 định dạng dữ liệu khác nhau, một số trong số đó không nằm trong en2 DataFormats
. Chúng bao gồm các định dạng như Biff12
, Biff8
, Biff5
, Format129
giữa các định dạng khác mà không quen với tôi, vì vậy tôi sẽ điều tra những điều này và trả lời nếu tôi thực hiện bất kỳ khám phá ...
Tôi vừa thử dán dữ liệu trong 10 chương trình khác nhau và tất cả đều cho tôi dữ liệu được định dạng "69.00% \ r \ n" giống như tôi thấy nó Clipboard.GetData –
Vâng, bạn nói đúng. Tôi đã suy nghĩ, Excel có clipboard bên trong riêng của nó, nơi nó lưu trữ tất cả các định dạng và dữ liệu chính xác, mà không được đưa vào clipboard chung? Và liệu Calc có một số hook vào clipboard trong Excel, rằng hầu hết các ứng dụng sẽ không có và không dễ dàng nhận được? Tôi sợ câu trả lời cho điều này. :-) – Lyall
nếu Calc sử dụng móc excel, tôi không thể thấy lý do tại sao bạn không thể sử dụng cùng móc đó ... – Adam