Click here to Skip to main content
15,885,278 members
Articles / Programming Languages / Visual Basic

Open Door - Reporting, Charts, Enquiry Drill-Downs

Rate me:
Please Sign up or sign in to vote.
4.37/5 (11 votes)
2 Feb 2009CPOL6 min read 39.2K   2K   59  
A utility for generating user editable reports, charts, documents, enquiries
/* 
 * You may amend and distribute as you like, but don't remove this header!
 * 
 * ExcelPackage provides server-side generation of Excel 2007 spreadsheets.
 * See http://www.codeplex.com/ExcelPackage for details.
 * 
 * Copyright 2007 � Dr John Tunnicliffe 
 * mailto:dr.john.tunnicliffe@btinternet.com
 * All rights reserved.
 * 
 * ExcelPackage is an Open Source project provided under the 
 * GNU General Public License (GPL) as published by the 
 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 * 
 * The GNU General Public License can be viewed at http://www.opensource.org/licenses/gpl-license.php
 * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html
 * 
 * The code for this project may be used and redistributed by any means PROVIDING it is 
 * not sold for profit without the author's written consent, and providing that this notice 
 * and the author's name and all copyright notices remain intact.
 * 
 * All code and executables are provided "as is" with no warranty either express or implied. 
 * The author accepts no liability for any damage or loss of business that this product may cause.
 */

/*
 * Code change notes:
 * 
 * Author							Change						Date
 * ******************************************************************************
 * John Tunnicliffe		Initial Release		01-Jan-2007
 * ******************************************************************************
 */
using System;
using System.Xml;

namespace OfficeOpenXml
{
	/// <summary>
	/// Represents the different view states of the worksheet
	/// </summary>
	public class ExcelWorksheetView
	{
		// TODO: implement the different view states of the worksheet
		private ExcelWorksheet _xlWorksheet;
		private XmlElement _sheetView;

		#region ExcelWorksheetView Constructor
		/// <summary>
		/// Creates a new ExcelWorksheetView which provides access to all the 
		/// view states of the worksheet.
		/// </summary>
		/// <param name="xlWorksheet"></param>
		protected internal ExcelWorksheetView(ExcelWorksheet xlWorksheet)
		{
			_xlWorksheet = xlWorksheet;
		}
		#endregion

		#region SheetViewElement
		/// <summary>
		/// Returns a reference to the sheetView element
		/// </summary>
		protected internal XmlElement SheetViewElement
		{
			get 
			{
				if (_sheetView == null)
				{
					_sheetView = (XmlElement)_xlWorksheet.WorksheetXml.SelectSingleNode("//d:sheetView", _xlWorksheet.NameSpaceManager);
				}
				return _sheetView;
			}
		}
		#endregion

		#region TabSelected
		/// <summary>
		/// Indicates if the worksheet is selected within the workbook
		/// </summary>
		public bool TabSelected
		{
			get
			{
				bool retValue = false;
				string ret = SheetViewElement.GetAttribute("tabSelected");
				if (ret == "1") retValue = true;
				return retValue;
			}
			set
			{
				// the sheetView node should always exist, so no need to create
				if (value)
				{
					// ensure no other worksheet has its tabSelected attribute set to 1
					foreach (ExcelWorksheet sheet in _xlWorksheet.xlPackage.Workbook.Worksheets)
						sheet.View.TabSelected = false;

					SheetViewElement.SetAttribute("tabSelected", "1");
				}
				else
					SheetViewElement.SetAttribute("tabSelected", "0");
			}
		}
		#endregion

		#region PageLayoutView
		/// <summary>
		/// Sets the view mode of the worksheet to pageLayout
		/// </summary>
		public bool PageLayoutView
		{
			get
			{
				bool retValue = false;
				string ret = SheetViewElement.GetAttribute("view");
				if (ret == "pageLayout") retValue = true;
				return retValue;
			}
			set
			{
				if (value)
					SheetViewElement.SetAttribute("view", "pageLayout");
				else
					SheetViewElement.RemoveAttribute("view");
			}
		}
		#endregion
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions