2012-05-16 33 views
8

Tôi có một phần cứng mà tôi nhận được 30 điểm dữ liệu. Mỗi điểm trong số này được ghi lại trong một bảng tính ở nhiều vị trí khác nhau trước khi trang tính được hiển thị, sau đó một chương trình khác chiếm toàn bộ bảng tính excel. Yêu cầu tất cả các giá trị này được ghi vào bảng tính trước khi chương trình khác tiếp quản. Nếu tôi viết từng ô riêng lẻ, ghi sẽ mất khoảng 50ms, mất khoảng 1,25 giây để hoàn thành việc thu thập dữ liệu.Trong C#, làm cách nào để sử dụng Excel Interop để tăng tốc ghi nhiều giá trị ô

Nếu tôi có thể ghi tất cả các giá trị vào bảng tính cùng một lúc, tôi cảm thấy điều này sẽ tăng tốc đáng kể việc viết tất cả các ô này. Vấn đề tôi thấy là phạm vi hoạt động rất tốt cho việc cập nhật các ô liền kề khi dữ liệu của tôi không tiếp giáp. Về cơ bản, đây sẽ là một ví dụ về những gì tôi muốn viết:
A1 = 1
B23 = a
F8 = 2012/12/25
D53 = 4,1235
B2 = 5

Tôi có đã thử tạo một phạm vi "A1, B23, F8, D53, B2", sau đó đặt các giá trị bằng cách sử dụng một mảng giá trị. Tôi đã thử 3 mảng khác nhau: đối tượng [5], đối tượng [1,5] và đối tượng [5,1]. Tất cả các giá trị này đều đặt giá trị của các ô được chỉ định trong phạm vi thành chỉ mục đầu tiên của mảng mà tôi đã tạo trong tất cả các trường hợp.

Có cách nào để cập nhật dữ liệu 30 ô này mà không cần lặp lại từng ô một không?

Cảm ơn, Tom

+0

Nếu điều này được giải quyết như bạn đã nói. Làm ơn, chấp nhận câu trả lời của Eugene Ryabtsev. – rcdmk

Trả lời

3

Nếu kiến ​​trúc của bạn cho phép, ý tưởng khác là sử dụng trang tính ẩn có phạm vi hình chữ nhật liên tục, đặt tên cho các bộ phận của nó và sử dụng các tên này trên tất cả các trang tính khác.

0

tôi sẽ xác định một đối tượng phạm vi hình chữ nhật bao gồm tất cả các tế bào có giá trị mà bạn muốn thay đổi. Nhận một mảng object[,] hình chữ nhật từ thuộc tính giá trị của phạm vi đó. Viết các giá trị mới vào mảng, và sau đó đặt giá trị của phạm vi bằng cách sử dụng mảng đã sửa đổi.

+0

Vâng, tôi muốn thử điều này, nhưng phạm vi của các tế bào kết thúc là rất lớn, và có tất cả các loại biểu đồ và công thức tôi sợ có thể can thiệp với điều này. Tôi vẫn có thể thử nó mặc dù. Cảm ơn. – bunggo

+1

@bunggo Trong trường hợp đó, tôi sẽ nói rằng lời đề nghị của Eugene Ryabtsev có vẻ hứa hẹn. – phoog

0

Bạn có thể ghi giá trị cho các ô kề nhau ở đâu đó, nói trong cột X và có công thức trong ô đích tham chiếu đến các ô được cập nhật này. Vì vậy, ô A1 sẽ có công thức "= X1", ô B23 "= X2", v.v.

Các vấn đề liên quan