2009-07-06 2 views
5

Là một phần của chương trình C# mà tôi đang sản xuất, tôi cần tạo ra 1 sổ làm việc có chứa; 2 bảng tính khác nhau và thứ 3 có thể được sản xuất bất kỳ số lần nào, cách hiệu quả nhất để làm điều này là gì? Tôi đã xem xét sử dụng các mẫu mặc dù tôi không chắc chắn làm thế nào để lặp lại các bảng tính nhất định trong khi chỉ hiển thị các trang tính khác một lần. Bất kỳ trợ giúp hoặc cố vấn sẽ được đánh giá cao.Sử dụng các mẫu trong excel với C#

+0

http://stackoverflow.com/questions/193092/c-how-to-add-excel-worksheet-programatically-office-xp-2003 – SwDevMan81

+0

Cảm ơn câu trả lời của bạn, tôi biết cách thêm bảng tính vào sổ làm việc, khó khăn của tôi là thêm các bảng tính đã có định dạng. Có thể là một mẫu khi một mẫu đã được sử dụng. –

Trả lời

1

Cách đơn giản là tạo một sổ tay mẫu làm ví dụ mẫu với ba trang tính. Sau đó tạo một bản sao của nó. Mở cả hai và sao chép lại bảng tính số 3 vào sổ làm việc dưới dạng trang tính mới nếu cần.

Để đối phó với những nhận xét:

Có một vài động cơ excel trong một sản phẩm phần .net chúng tôi có giống như thiết bị bảng tính hoặc các tế bào Aspose. Nhưng nếu ứng dụng của bạn là một hình thức cửa sổ dựa và nơi ứng dụng được đảm bảo để chạy có văn phòng, bạn có thể sử dụng tự động hóa văn phòng. Bạn không thể sử dụng hợp pháp tự động hóa văn phòng trên một máy chủ web, nhưng nó chỉ là có thể trên một máy chủ web như trên một máy tính để bàn khách hàng. Tôi đã sử dụng các tế bào aspose và nó rất dễ dàng để làm việc với và rất có khả năng và ít tốn kém hơn so với thiết bị bảng tính, nhưng thiết bị bảng tính cũng có một danh tiếng tốt. Cả hai thành phần này đều có tài liệu rất tốt về cách làm bất cứ điều gì với excel. Nhưng nếu bạn có excel và muốn sử dụng tự động hóa văn phòng, hãy chắc chắn tìm mã ví dụ trên web về cách đóng đúng excel từ C# hoặc vb.net. Có một số thủ thuật để làm cho nó đóng đúng cách.

+0

Trước hết cảm ơn bạn đã trả lời. Tôi đã nghĩ về điều đó mặc dù tôi không chắc liệu đó có phải là phương pháp tốt nhất hay không. Bạn có biết về bất kỳ tài nguyên tốt nào để tạo các bảng excel với C#. Các nguồn lực tôi đã tìm thấy đã được khá nghèo. –

+0

xem các chỉnh sửa của tôi ở trên và cũng có thể sử dụng tự động hóa văn phòng, bạn có thể sử dụng http: // msdn.microsoft.com/en-us/library/aa272268(office.11).aspx dưới dạng tham chiếu api. – gjutras

+0

+1: Đây là cách tôi luôn làm điều đó. – RBarryYoung

0

có ISheet.CopyAfter/CopyBefore phương pháp cho phép bạn sao chép toàn bộ trang tính trong sổ làm việc hoặc giữa sổ làm việc.

Bạn có thể xem ví dụ sao chép một trang tính nhiều lần trong Trang tính với Biểu đồ cho nhiều bảng tính với biểu đồ mẫu trên trang Mẫu bảng tính báo cáo/Excel Bảng tính here.

Tuyên bố từ chối trách nhiệm: Tôi sở hữu SpreadsheetGear LLC

0

Tôi đã thực hiện việc này trước khi có mẫu. Tôi sẽ tạo một xls mẫu với hai trang tính đầu tiên mà bạn không muốn thay đổi, sau đó thêm trang tính thứ ba mà bạn có thể sao chép vào cuối sổ làm việc (vì bạn cần nhiều trang tính hơn).

Nếu bạn biết trước số lượng trang tính thứ 3 mà bạn cần, thì bạn có thể sao chép chúng vào cuối và xóa vùng thứ ba của mẫu.

 ExcelTemplateManager t = new ExcelTemplateManager(template_path, log_path); 
    t.CopyWorksheetToEnd(3); 
    t.CopyWorksheetToEnd(3); 
    t.RemoveAtIndexWorksheet(3); 
    t.SetSomeValue(3); 
    t.SetSomeValue(4); 
    t.Close(); 

Nếu bạn không biết, sau đó giữ mẫu xung quanh để sao chép nó vào cuối cùng khi cần thiết, sau đó khi bạn đang thực hiện, chỉ cần loại bỏ các mẫu bảng 3.

 ExcelTemplateManager t = new ExcelTemplateManager(template_path, log_path); 
    t.CopyWorksheetToEnd(3); 
    t.SetSomeValue(4); 
    t.CopyWorksheetToEnd(3); 
    t.SetSomeValue(5); 
    t.RemoveAtIndexWorksheet(3); 
    t.Close(); 

tôi đã sử dụng dll Microsoft.Office.Interop.Excel để tạo ra lớp ExcelTemplateManger tôi. Ý tưởng cơ bản là tạo một bản sao của tệp excel mẫu và làm việc với bản sao. Hãy cho tôi biết nếu bạn cần trợ giúp thiết lập phần đó, nhưng nó sẽ là quá xấu.

+0

bạn có thể cho tôi biết người quản lý mẫu của bạn trông như thế nào không. Tôi cần xem bạn đang điền mẫu như thế nào – user236215