protected void lnkBtnCreateWorkbook_Click(object sender, EventArgs e)
{
// get the Excel workbook format
ExcelWorkbookFormat workbookFormat = radioXlsFormat.Checked ? ExcelWorkbookFormat.Xls_2003 :
ExcelWorkbookFormat.Xlsx_2007;
// create the workbook in the desired format with a single worksheet
ExcelWorkbook workbook = new ExcelWorkbook(workbookFormat);
// set the license key before saving the workbook
workbook.LicenseKey = "RW51ZXZ0ZXVldGt1ZXZ0a3R3a3x8fHw=";
// set workbook description properties
workbook.DocumentProperties.Subject = "Accessing Ranges and Cells";
workbook.DocumentProperties.Comments =
"Accessing Ranges and Cells using Winnovative Excel library for .NET";
#region CREATE CUSTOM WORKBOOK STYLES
#region Add a style used for the cells in the worksheet title area
ExcelCellStyle titleStyle = workbook.Styles.AddStyle("WorksheetTitleStyle");
// center the text in the title area
titleStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Center;
titleStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center;
// set the title area borders
titleStyle.Borders[ExcelCellBorderIndex.Bottom].Color = Color.Green;
titleStyle.Borders[ExcelCellBorderIndex.Bottom].LineStyle = ExcelCellLineStyle.Medium;
titleStyle.Borders[ExcelCellBorderIndex.Top].Color = Color.Green;
titleStyle.Borders[ExcelCellBorderIndex.Top].LineStyle = ExcelCellLineStyle.Medium;
titleStyle.Borders[ExcelCellBorderIndex.Left].Color = Color.Green;
titleStyle.Borders[ExcelCellBorderIndex.Left].LineStyle = ExcelCellLineStyle.Medium;
titleStyle.Borders[ExcelCellBorderIndex.Right].Color = Color.Green;
titleStyle.Borders[ExcelCellBorderIndex.Right].LineStyle = ExcelCellLineStyle.Medium;
if (workbookFormat == ExcelWorkbookFormat.Xls_2003)
{
// set the solid fill for the title area range with a custom color
titleStyle.Fill.FillType = ExcelCellFillType.SolidFill;
titleStyle.Fill.SolidFillOptions.BackColor = Color.FromArgb(255, 255, 204);
}
else
{
// set the gradient fill for the title area range with a custom color
titleStyle.Fill.FillType = ExcelCellFillType.GradientFill;
titleStyle.Fill.GradientFillOptions.Color1 = Color.FromArgb(255, 255, 204);
titleStyle.Fill.GradientFillOptions.Color2 = Color.White;
}
// set the title area font
titleStyle.Font.Size = 14;
titleStyle.Font.Bold = true;
titleStyle.Font.UnderlineType = ExcelCellUnderlineType.Single;
#endregion
#region Add a style used for text messages
ExcelCellStyle textMessageStyle = workbook.Styles.AddStyle("TextMessageStyle");
textMessageStyle.Font.Size = 12;
textMessageStyle.Font.Bold = true;
textMessageStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center;
textMessageStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Left;
textMessageStyle.Fill.FillType = ExcelCellFillType.SolidFill;
textMessageStyle.Fill.SolidFillOptions.BackColor = Color.LightBlue;
textMessageStyle.Borders[ExcelCellBorderIndex.Bottom].LineStyle = ExcelCellLineStyle.Thin;
textMessageStyle.Borders[ExcelCellBorderIndex.Top].LineStyle = ExcelCellLineStyle.Thin;
textMessageStyle.Borders[ExcelCellBorderIndex.Left].LineStyle = ExcelCellLineStyle.Thin;
textMessageStyle.Borders[ExcelCellBorderIndex.Right].LineStyle = ExcelCellLineStyle.Thin;
#endregion
#region Add a style used for accessed cells and ranges
ExcelCellStyle accessedRangeStyle = workbook.Styles.AddStyle("ΑccessedRangeStyle");
accessedRangeStyle.Font.Size = 10;
accessedRangeStyle.Font.Bold = true;
accessedRangeStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center;
accessedRangeStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Left;
accessedRangeStyle.Fill.FillType = ExcelCellFillType.SolidFill;
accessedRangeStyle.Fill.SolidFillOptions.BackColor = Color.FromArgb(204, 255, 204);
accessedRangeStyle.Borders[ExcelCellBorderIndex.Bottom].LineStyle = ExcelCellLineStyle.Thin;
accessedRangeStyle.Borders[ExcelCellBorderIndex.Top].LineStyle = ExcelCellLineStyle.Thin;
accessedRangeStyle.Borders[ExcelCellBorderIndex.Left].LineStyle = ExcelCellLineStyle.Thin;
accessedRangeStyle.Borders[ExcelCellBorderIndex.Right].LineStyle = ExcelCellLineStyle.Thin;
#endregion
#endregion
// get the first worksheet in the workbook
ExcelWorksheet worksheet = workbook.Worksheets[0];
// set the default worksheet name
worksheet.Name = "Access Ranges And Cells Demo";
#region WORKSHEET PAGE SETUP
// set worksheet paper size and orientation, margins, header and footer
worksheet.PageSetup.PaperSize = ExcelPagePaperSize.PaperA4;
worksheet.PageSetup.Orientation = ExcelPageOrientation.Landscape;
worksheet.PageSetup.LeftMargin = 1;
worksheet.PageSetup.RightMargin = 1;
worksheet.PageSetup.TopMargin = 1;
worksheet.PageSetup.BottomMargin = 1;
// add header and footer
//display a logo image in the left part of the header
string imagesPath = System.IO.Path.Combine(Server.MapPath("~"), @"Images");
System.Drawing.Image logoImg = System.Drawing.Image.FromFile(System.IO.Path.Combine(imagesPath, "logo.jpg"));
worksheet.PageSetup.LeftHeaderFormat = "&G";
worksheet.PageSetup.LeftHeaderPicture = logoImg;
// display worksheet name in the right part of the header
worksheet.PageSetup.RightHeaderFormat = "&A";
// add worksheet header and footer
// display the page number in the center part of the footer
worksheet.PageSetup.CenterFooterFormat = "&P";
// display the workbook file name in the left part of the footer
worksheet.PageSetup.LeftFooterFormat = "&F";
// display the current date in the right part of the footer
worksheet.PageSetup.RightFooterFormat = "&D";
#endregion
#region WRITE THE WORKSHEET TOP TITLE
// merge the cells in the range to create the title area
worksheet["A2:G3"].Merge();
// gets the merged range containing the top left cell of the range
ExcelRange titleRange = worksheet["A2"].MergeArea;
// set the text of title area
worksheet["A2"].Text = "Accessing Cells and
Ranges of Cells";
// set a row height of 18 points for each row in the range
titleRange.RowHeightInPoints = 18;
// set the worksheet top title style
titleRange.Style = titleStyle;
#endregion
#region ACCESS CELLS AND RANGES OF CELLS
//set column width
worksheet["A1:G1"].ColumnWidthInChars = 14;
worksheet["A5:G5"].Merge();
worksheet["A5:G5"].Style = textMessageStyle;
worksheet["A5:G5"].Value = "Access a single
cell using the 'A1' notation:";
// access a single cell using the A1 notation
worksheet["A7"].Value = "sheet[A7]";
worksheet["A7"].Style = accessedRangeStyle;
worksheet["A9:G9"].Merge();
worksheet["A9:G9"].Style = textMessageStyle;
worksheet["A9:G9"].Value = "Access a range
of cells using the 'A1' notation:";
//access a range of cells using the A1 notation
worksheet["A11:G12"].Value = "sheet[A11:G12]";
worksheet["A11:G12"].Style = accessedRangeStyle;
worksheet["A14:G14"].Merge();
worksheet["A14:G14"].Style = textMessageStyle;
worksheet["A14:G14"].Value = "Access a single
cell using row and column index:";
// access a cell by one-based row and column index
worksheet[16, 1].Value = "sheet[16,1]";
worksheet[16, 1].Style = accessedRangeStyle;
worksheet["A18:G18"].Merge();
worksheet["A18:G18"].Style = textMessageStyle;
worksheet["A18:G18"].Value = "Access a range
of cells using row and column index:";
// access a range of cells by one-based row and column index
worksheet[20, 1, 21, 7].Value = "sheet[20,1,21,7]";
worksheet[20, 1, 21, 7].Style = accessedRangeStyle;
worksheet["A23:G23"].Merge();
worksheet["A23:G23"].Style = textMessageStyle;
worksheet["A23:G23"].Value = \
"Access a range of cells using a named range defined at worksheet
or workbook level:";
// access a range of cells using a named range
// a named range defined at worksheet level can be referenced only
inside the worksheet where it is defined
// a named range defined at workbook level can referenced by all the
worksheets in the workbook
// add a named range at worksheet level
ExcelNamedRange worksheetNamedRange = worksheet.NamedRanges.AddNamedRange(worksheet["A25"], "MyWSNamedRange");
worksheet["MyWSNamedRange"].Value = "Named
Range in Worksheet";
worksheet["MyWSNamedRange"].Style.Font.Color = Color.Green;
worksheet["MyWSNamedRange"].Style.Font.Bold = true;
// add a named range at wotkbook level
ExcelNamedRange workbookNamedRange = workbook.NamedRanges.AddNamedRange(worksheet["A26"], "MyWBNamedRange");
worksheet["MyWBNamedRange"].Value = "Named
Range in Workbook";
worksheet["MyWBNamedRange"].Style.Font.Color = Color.Green;
worksheet["MyWBNamedRange"].Style.Font.Bold = true;
// Get the used range of the worksheet
worksheet["A28:G28"].Merge();
worksheet["A28:G28"].Style = textMessageStyle;
worksheet["A28:G28"].Value = "Get the Used
Range of the worksheet:";
// access a cell by one-based row and column index
worksheet[30, 1].Style.Font.Color = Color.Green;
worksheet[30, 1].Style.Font.Bold = true;
worksheet[30, 1].Value = worksheet.UsedRange.Address;
#endregion
// SAVE THE WORKBOOK
// Save the Excel document in the current HTTP response stream
string outFileName = workbookFormat == ExcelWorkbookFormat.Xls_2003 ? "RangesAndCels.xls" :
"RangesAndCels.xlsx";
System.Web.HttpResponse httpResponse = System.Web.HttpContext.Current.Response;
// Prepare the HTTP response stream for saving the Excel document
// Clear any data that might have been previously buffered in the
output stream
httpResponse.Clear();
// Set output stream content type for Excel 97-2003 (.xls) or Excel
2007 (.xlsx)
if (workbookFormat == ExcelWorkbookFormat.Xls_2003)
httpResponse.ContentType = "Application/x-msexcel";
else
httpResponse.ContentType = "Application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
// Add the HTTP header to announce the Excel document either as an
attachment or inline
httpResponse.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", outFileName));
// Save the workbook to the current HTTP response output stream
// and close the workbook after save to release all the allocated
resources
try
{
workbook.Save(httpResponse.OutputStream);
}
catch (Exception ex)
{
// report any error that might occur during save
Session["ErrorMessage"] = ex.Message;
Response.Redirect("ErrorPage.aspx");
}
finally
{
// close the workbook and release the allocated resources
workbook.Close();
#region Dispose the Image object
if (logoImg != null)
logoImg.Dispose();
#endregion
}
// End the response and finish the execution of this page
httpResponse.End();
}
Protected Sub lnkBtnCreateWorkbook_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles lnkBtnCreateWorkbook.Click
' get the Excel workbook format
Dim workbookFormat As ExcelWorkbookFormat
If radioXlsFormat.Checked Then
workbookFormat = ExcelWorkbookFormat.Xls_2003
Else
workbookFormat = ExcelWorkbookFormat.Xlsx_2007
End If
' create the workbook in the desired format with a single worksheet
Dim workbook As ExcelWorkbook = New ExcelWorkbook(workbookFormat)
' set the license key before saving the workbook
workbook.LicenseKey = "RW51ZXZ0ZXVldGt1ZXZ0a3R3a3x8fHw="
' set workbook description properties
workbook.DocumentProperties.Subject = "Accessing Ranges and Cells"
workbook.DocumentProperties.Comments =
"Accessing Ranges and Cells using Winnovative Excel library for .NET"
' CREATE CUSTOM WORKBOOK STYLES
' Add a style used for the cells in the worksheet title area
Dim titleStyle As ExcelCellStyle = workbook.Styles.AddStyle("WorksheetTitleStyle")
' center the text in the title area
titleStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Center
titleStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center
' set the title area borders
titleStyle.Borders.Item(ExcelCellBorderIndex.Bottom).Color = Color.Green
titleStyle.Borders.Item(ExcelCellBorderIndex.Bottom).LineStyle = ExcelCellLineStyle.Medium
titleStyle.Borders.Item(ExcelCellBorderIndex.Top).Color = Color.Green
titleStyle.Borders.Item(ExcelCellBorderIndex.Top).LineStyle = ExcelCellLineStyle.Medium
titleStyle.Borders.Item(ExcelCellBorderIndex.Left).Color = Color.Green
titleStyle.Borders.Item(ExcelCellBorderIndex.Left).LineStyle = ExcelCellLineStyle.Medium
titleStyle.Borders.Item(ExcelCellBorderIndex.Right).Color = Color.Green
titleStyle.Borders.Item(ExcelCellBorderIndex.Right).LineStyle = ExcelCellLineStyle.Medium
If workbookFormat = ExcelWorkbookFormat.Xls_2003 Then
' set the solid fill for the title area range with a custom color
titleStyle.Fill.FillType = ExcelCellFillType.SolidFill
titleStyle.Fill.SolidFillOptions.BackColor = Color.FromArgb(255, 255, 204)
Else
' set the gradient fill for the title area range with a custom color
titleStyle.Fill.FillType = ExcelCellFillType.GradientFill
titleStyle.Fill.GradientFillOptions.Color1 = Color.FromArgb(255, 255, 204)
titleStyle.Fill.GradientFillOptions.Color2 = Color.White
End If
' set the title area font
titleStyle.Font.Size = 14
titleStyle.Font.Bold = True
titleStyle.Font.UnderlineType = ExcelCellUnderlineType.Single
' Add a style used for text messages
Dim textMessageStyle As ExcelCellStyle = workbook.Styles.AddStyle("TextMessageStyle")
textMessageStyle.Font.Size = 12
textMessageStyle.Font.Bold = True
textMessageStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center
textMessageStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Left
textMessageStyle.Fill.FillType = ExcelCellFillType.SolidFill
textMessageStyle.Fill.SolidFillOptions.BackColor = Color.LightBlue
textMessageStyle.Borders.Item(ExcelCellBorderIndex.Bottom).LineStyle = ExcelCellLineStyle.Thin
textMessageStyle.Borders.Item(ExcelCellBorderIndex.Top).LineStyle = ExcelCellLineStyle.Thin
textMessageStyle.Borders.Item(ExcelCellBorderIndex.Left).LineStyle = ExcelCellLineStyle.Thin
textMessageStyle.Borders.Item(ExcelCellBorderIndex.Right).LineStyle = ExcelCellLineStyle.Thin
' Add a style used for accessed cells and ranges
Dim accessedRangeStyle As ExcelCellStyle = workbook.Styles.AddStyle("ΑccessedRangeStyle")
accessedRangeStyle.Font.Size = 10
accessedRangeStyle.Font.Bold = True
accessedRangeStyle.Alignment.VerticalAlignment = ExcelCellVerticalAlignmentType.Center
accessedRangeStyle.Alignment.HorizontalAlignment = ExcelCellHorizontalAlignmentType.Left
accessedRangeStyle.Fill.FillType = ExcelCellFillType.SolidFill
accessedRangeStyle.Fill.SolidFillOptions.BackColor = Color.FromArgb(204, 255, 204)
accessedRangeStyle.Borders.Item(ExcelCellBorderIndex.Bottom).LineStyle = ExcelCellLineStyle.Thin
accessedRangeStyle.Borders.Item(ExcelCellBorderIndex.Top).LineStyle = ExcelCellLineStyle.Thin
accessedRangeStyle.Borders.Item(ExcelCellBorderIndex.Left).LineStyle = ExcelCellLineStyle.Thin
accessedRangeStyle.Borders.Item(ExcelCellBorderIndex.Right).LineStyle = ExcelCellLineStyle.Thin
' get the first worksheet in the workbook
Dim worksheet As ExcelWorksheet = workbook.Worksheets.Item(0)
' set the default worksheet name
worksheet.Name = "Access Ranges And Cells Demo"
' WORKSHEET PAGE SETUP
' set worksheet paper size and orientation, margins, header and footer
worksheet.PageSetup.PaperSize = ExcelPagePaperSize.PaperA4
worksheet.PageSetup.Orientation = ExcelPageOrientation.Landscape
worksheet.PageSetup.LeftMargin = 1
worksheet.PageSetup.RightMargin = 1
worksheet.PageSetup.TopMargin = 1
worksheet.PageSetup.BottomMargin = 1
' add header and footer
'display a logo image in the left part of the header
Dim imagesPath As String = System.IO.Path.Combine(Server.MapPath("~"), "Images")
Dim logoImg As System.Drawing.Image = System.Drawing.Image.FromFile(System.IO.Path.Combine(imagesPath, "logo.jpg"))
worksheet.PageSetup.LeftHeaderFormat = "&G"
worksheet.PageSetup.LeftHeaderPicture = logoImg
' display worksheet name in the right part of the header
worksheet.PageSetup.RightHeaderFormat = "&A"
' add worksheet header and footer
' display the page number in the center part of the footer
worksheet.PageSetup.CenterFooterFormat = "&P"
' display the workbook file name in the left part of the footer
worksheet.PageSetup.LeftFooterFormat = "&F"
' display the current date in the right part of the footer
worksheet.PageSetup.RightFooterFormat = "&D"
'n WRITE THE WORKSHEET TOP TITLE
' merge the cells in the range to create the title area
worksheet.Item("A2:G3").Merge()
' gets the merged range containing the top left cell of the range
Dim titleRange As ExcelRange = worksheet.Item("A2").MergeArea
' set the text of title area
worksheet.Item("A2").Text = "Accessing Cells
and Ranges of Cells"
' set a row height of 18 points for each row in the range
titleRange.RowHeightInPoints = 18
' set the worksheet top title style
titleRange.Style = titleStyle
' ACCESS CELLS AND RANGES OF CELLS
'set column width
worksheet.Item("A1:G1").ColumnWidthInChars = 14
worksheet.Item("A5:G5").Merge()
worksheet.Item("A5:G5").Style = textMessageStyle
worksheet.Item("A5:G5").Value = "Access a
single cell using the 'A1' notation:"
' access a single cell using the A1 notation
worksheet.Item("A7").Value = "sheet[A7]"
worksheet.Item("A7").Style = accessedRangeStyle
worksheet.Item("A9:G9").Merge()
worksheet.Item("A9:G9").Style = textMessageStyle
worksheet.Item("A9:G9").Value = "Access a
range of cells using the 'A1' notation:"
'access a range of cells using the A1 notation
worksheet.Item("A11:G12").Value = "sheet[A11:G12]"
worksheet.Item("A11:G12").Style = accessedRangeStyle
worksheet.Item("A14:G14").Merge()
worksheet.Item("A14:G14").Style = textMessageStyle
worksheet.Item("A14:G14").Value = "Access
a single cell using row and column index:"
' access a cell by one-based row and column index
worksheet.Item(16, 1).Value = "sheet[16,1]"
worksheet.Item(16, 1).Style = accessedRangeStyle
worksheet.Item("A18:G18").Merge()
worksheet.Item("A18:G18").Style = textMessageStyle
worksheet.Item("A18:G18").Value = "Access
a range of cells using row and column index:"
' access a range of cells by one-based row and column index
worksheet.Item(20, 1, 21, 7).Value = "sheet[20,1,21,7]"
worksheet.Item(20, 1, 21, 7).Style = accessedRangeStyle
worksheet.Item("A23:G23").Merge()
worksheet.Item("A23:G23").Style = textMessageStyle
worksheet.Item("A23:G23").Value =
"Access a range of cells using a named range defined at worksheet
or workbook level:"
' access a range of cells using a named range
' a named range defined at worksheet level can be referenced only
inside the worksheet where it is defined
' a named range defined at workbook level can referenced by all the
worksheets in the workbook
' add a named range at worksheet level
Dim worksheetNamedRange As ExcelNamedRange = worksheet.NamedRanges.AddNamedRange(worksheet.Item("A25"),
"MyWSNamedRange")
worksheet.Item("MyWSNamedRange").Value = "Named
Range in Worksheet"
worksheet.Item("MyWSNamedRange").Style.Font.Color = Color.Green
worksheet.Item("MyWSNamedRange").Style.Font.Bold = True
' add a named range at wotkbook level
Dim workbookNamedRange As ExcelNamedRange = workbook.NamedRanges.AddNamedRange(worksheet.Item("A26"),
"MyWBNamedRange")
worksheet.Item("MyWBNamedRange").Value = "Named
Range in Workbook"
worksheet.Item("MyWBNamedRange").Style.Font.Color = Color.Green
worksheet.Item("MyWBNamedRange").Style.Font.Bold = True
' Get the used range of the worksheet
worksheet.Item("A28:G28").Merge()
worksheet.Item("A28:G28").Style = textMessageStyle
worksheet.Item("A28:G28").Value = "Get the
Used Range of the worksheet:"
' access a cell by one-based row and column index
worksheet.Item(30, 1).Style.Font.Color = Color.Green
worksheet.Item(30, 1).Style.Font.Bold = True
worksheet.Item(30, 1).Value = worksheet.UsedRange.Address
' SAVE THE WORKBOOK
' Save the Excel document in the current HTTP response stream
Dim outFileName As String
If workbookFormat = ExcelWorkbookFormat.Xls_2003 Then
outFileName = "RangesAndCels.xls"
Else
outFileName = "RangesAndCels.xlsx"
End If
Dim httpResponse As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
' Prepare the HTTP response stream for saving the Excel document
' Clear any data that might have been previously buffered in the output
stream
httpResponse.Clear()
' Set output stream content type for Excel 97-2003 (.xls) or Excel
2007 (.xlsx)
If workbookFormat = ExcelWorkbookFormat.Xls_2003 Then
httpResponse.ContentType = "Application/x-msexcel"
Else
httpResponse.ContentType = "Application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
End If
' Add the HTTP header to announce the Excel document either as an
attachment or inline
httpResponse.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", outFileName))
' Save the workbook to the current HTTP response output stream
' and close the workbook after save to release all the allocated resources
Try
workbook.Save(httpResponse.OutputStream)
Catch ex As Exception
' report any error that might occur during save
Session.Item("ErrorMessage") = ex.Message
Response.Redirect("ErrorPage.aspx")
Finally
' close the workbook and release the allocated resources
workbook.Close()
' Dispose the Image object
If Not logoImg Is Nothing Then
logoImg.Dispose()
End If
End Try
' End the response and finish the execution of this page
httpResponse.End()
End Sub
|