2012-01-11 27 views
6


Tôi cần ẩn hoàn toàn cột excel. Tôi đã sử dụng mã bên dưới nhưng không hoạt động:
Làm thế nào để ẩn một cột excel?

public void Hide (params string[] columns) 
{ 
    foreach(var column in columns) 
    { 
     Range range = (Range) oSheet.Columns[column, Type.Missing]; 
     range.EntireColumn.Hidden = true; 
    } 
} 

Tôi đang thiếu gì?

Trả lời

2

Đoạn mã trên đang hoạt động .. xin lỗi các bạn! Vấn đề là, đồng nghiệp của tôi đã sử dụng để tự động điều chỉnh tất cả các cột, ngay trước khi lưu tệp, sẽ ghi đè cài đặt của tôi ở trên. Có, một chức năng được gọi là CloseFile() có hai công việc, định dạng và sau đó tiết kiệm .. nhiều trách nhiệm, eh?

+1

Tại sao tính năng tự động thu thập và ẩn? Tôi cần phải làm cả hai - ẩn hàng nhất định (không cột), nhưng cũng sử dụng autofit. –

2

Nó chỉ ra rằng ẩn một hàng của các hàng và cột bạn chỉ định không thể là một heck dễ dàng hơn nhiều. Đây là cách bạn làm điều đó, trong hai bước đơn giản:

1) Đặt tên cho bảng tính của bạn:

private Worksheet _xlSheet; 

2) Bây giờ, đặt tên cho một phạm vi, bao gồm cả hàng đầu tiên và cột để che giấu và sau đó là hàng cuối cùng và cột để ẩn, như vậy:

var hiddenRange = yourWorksheet.Range[_xlSheet.Cells[42, 1], _xlSheet.Cells[999, 13]]; 
hiddenRange.EntireRow.Hidden = true; 

Điều này giả định hàng đầu tiên bạn muốn ẩn là 42, v.v. Rõ ràng bạn sẽ muốn thay đổi các giá trị được mã hóa này.

Như một ví dụ, đây là một số mã thực tế, sử dụng các hằng số và các biến thay vì Vals hardcoded, mà phản ứng với một boolean có giá trị cho biết phạm vi nên được ẩn hay không:

private bool _hide; 
private int _curTopRow; 
private static readonly int ITEMDESC_COL = 1; 
private static readonly int TOTALS_COL = 16; 
. . . 
if (_hide) 
{ 
    var hiddenRange = _xlSheet.Range[_xlSheet.Cells[_curTopRow, ITEMDESC_COL], _xlSheet.Cells[_curTopRow+3, TOTALS_COL]]; 
    hiddenRange.EntireRow.Hidden = true; 
} 

Lưu ý rằng bạn cần để tham khảo hội đồng Microsoft.Office.Interop.Excel.

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