Public API Changes in Aspose.Cells 8.7.0
Added APIs
Support for VBA Project Digital Signing, Detection & Extraction
This release of Aspose.Cells for .NET has exposed some new properties and methods to aid the users in tasks such as digitally signing a VBA project, detecting if a VBA project is signed & valid. Moreover, the new API allows to extract the certificate as raw data from digitally signed VBA project in Workbook.
Digitally Sign VBA Project
Aspose.Cells for .NET 8.7.0 has exposed the VbaProject.Sign method that can be used to digitally sign the VBA project in a Workbook. The said method accepts an instance of DigitalSignature class which resides in the Aspose.Cells.DigitalSignatures namespace.
Following is the simple usage scenario.
C#
//Create an instance of Workbook
//Optionally load an existing spreadsheet
var book = new Workbook();
//Access the VbaProject from the Workbook
var vbaProject = book.VbaProject;
//Sign the VbaProject using the X509Certificate
vbaProject.Sign(new DigitalSignature(new System.Security.Cryptography.X509Certificates.X509Certificate2(cert), "Comments", DateTime.Now));
Detection of Digitally Signed VBA Project
Newly exposed VbaProject.IsSigned property can be used to in detect if the VBA project in a Workbook is digitally signed. The VbaProject.IsSigned property is of type Boolean, which returns true if the VBA project is digitally signed and vice versa.
Following is the simple usage scenario.
C#
//Create an instance of Workbook and load an existing spreadsheet
var book = new Workbook(inFilePath);
//Access the VbaProject from the Workbook
var vbaProject = book.VbaProject;
//Check if VbaProject is digitally signed
if (vbaProject.IsSigned)
{
Console.WriteLine("VbaProject is digitally signed");
}
else
{
Console.WriteLine("VbaProject is not digitally signed");
}
Extraction of Digital Signature from VBA Project
This revision of the API has also exposed the VbaProject.CertRawData property which allows to extract the digital certificate’s raw data from the VBA project. The VbaProject.CertRawData property is of type byte array, which will contain the raw certificate data if VBA project is digitally signed, otherwise the said property will be null.
Following is the simple usage scenario.
C#
//Create an instance of Workbook and load an existing spreadsheet
var book = new Workbook(inFilePath);
//Access the VbaProject from the Workbook
var vbaProject = book.VbaProject;
//Extract digital signature in an array of bytes
var cert = vbaProject.CertRawData;
Validate the Digital Signature of VBA Project
Another addition to the public API is the VbaProject.IsValidSigned property which could be useful in validating the digital signature of the VBA project. The said property returns true if the digital signature is valid and false if the signature is invalid.
Following is the simple usage scenario.
C#
//Create an instance of Workbook and load an existing spreadsheet
var book = new Workbook(inFilePath);
//Access the VbaProject from the Workbook
var vbaProject = book.VbaProject;
//Check if VbaProject is digitally signed
if (vbaProject.IsSigned)
{
//Check if signature is valid
if (vbaProject.IsValidSigned)
{
Console.WriteLine("VbaProject is digitally signed & signature is valid");
}
}
Added Protection.VerifyPassword Method
Aspose.Cells for .NET 8.7.0 has exposed the Protection.VerifyPassword method that can be used to verify the password used to protect the Worksheet. This method accepts an instance of string as parameter and returns true if specified password matches with the password used to protect the Worksheet.
Following is the simple usage scenario.
C#
//Create an instance of Workbook and load an existing spreadsheet
var book = new Workbook(inFilePath);
//Access the desired Worksheet via its index or name
var sheet = book.Worksheets[0];
//Access Protection module of desired Worksheet
var protection = sheet.Protection;
//Verify the password for Worksheet
if (protection.VerifyPassword(password))
{
Console.WriteLine("Password has matched");
}
else
{
Console.WriteLine("Password did not match");
}
Added Protection.IsProtectedWithPassword Property
This release of Aspose.Cells for .NET API has also exposed the Protection.IsProtectedWithPassword property that can be useful in detecting if a Worksheet is password protected or not.
Following is the simple usage scenario.
C#
//Create an instance of Workbook and load an existing spreadsheet
var book = new Workbook(inFilePath);
//Access the desired Worksheet via its index or name
var sheet = book.Worksheets[0];
//Access Protection module of desired Worksheet
var protection = sheet.Protection;
//Check if Worksheet is password protected
if (protection.IsProtectedWithPassword)
{
Console.WriteLine("Worksheet is password protected");
}
else
{
Console.WriteLine("Worksheet is not password protected");
}
Added ColorScale.Is3ColorScale Property
Aspose.Cells for .NET 8.7.0 has exposed the ColorScale.Is3ColorScale property that can be used to create 2-Color Scale conditional format. The said property is of type Boolean with default value of true which means that the conditional format will be of 3-Color Scale by default. However, switching the ColorScale.Is3ColorScale property to false will generate a 2-Color Scale conditional format.
Following is the simple usage scenario.
C#
//Create an instance of Workbook
//Optionally load an existing spreadsheet
var book = new Workbook();
//Access the Worksheet to which conditional formatting rule has to be added
var sheet = book.Worksheets[0];
//Add FormatConditions to the collection
int index = sheet.ConditionalFormattings.Add();
//Access newly added formatConditionCollection via its index
var formatConditionCollection = sheet.ConditionalFormattings[index];
//Create a CellArea on which conditional formatting rule will be applied
var cellArea = CellArea.CreateCellArea("A1", "A5");
//Add conditional formatted cell range
formatConditionCollection.AddArea(cellArea);
//Add format condition of type ColorScale
index = formatConditionCollection.AddCondition(FormatConditionType.ColorScale);
//Access newly added format condition via its index
var formatCondition = formatConditionCollection[index];
//Set Is3ColorScale to false in order to generate a 2-Color Scale format
formatCondition.ColorScale.Is3ColorScale = false;
//Set other necessary properties
Added TxtLoadOptions.HasFormula Property
Aspose.Cells for .NET 8.7.0 has provided support to identify & parse the formulas while loading CSV/TXT files having delimited plain data. Newly exposed TxtLoadOptions.HasFormula property when set to true directs the API to parse the formulas from the input delimited file and set them to relevant cells without requiring any additional processing.
Following is the simple usage scenario.
C#
//Create an instance of TxtLoadOptions
var options = new TxtLoadOptions();
//Set HasFormula property to true
options.HasFormula = true;
//Set the Separator property as desired
options.Separator = ',';
//Load the CSV/TXT file using the instance of TxtLoadOptions
var book = new Workbook(inFilePath, options);
//Calculate formulas in order to get the calculated values of formula in CSV
book.CalculateFormula();
//Write result in any of the supported formats
book.Save(outFilePath);
Added DataLabels.IsResizeShapeToFitText Property
Another useful feature that Aspose.Cells for .NET 8.7.0 has exposed is the DataLabels.IsResizeShapeToFitText property that can enable the Resize shape to fit text feature of Excel application for chart’s data labels.
Following is the simple usage scenario.
C#
//Create an instance of Workbook containing the Chart
var book = new Workbook(inFilePath);
//Access the Worksheet that contains the Chart
var sheet = book.Worksheets[0];
//Access the desired Chart via its index or name
var chart = sheet.Charts[0];
//Access the DataLabels of desired NSeries
var labels = chart.NSeries[0].DataLabels;
//Set ResizeShapeToFitText property to true
labels.IsResizeShapeToFitText = true;
//Calculate Chart
chart.Calculate();
Added PdfSaveOptions.OptimizationType Property
Aspose.Cells for .NET 8.7.0 has exposed the PdfSaveOptions.OptimizationType property along with PdfOptimizationType enumeration in order to facilitate the users to choose the desired optimization algorithm while exporting spreadsheets to PDF format. There are 2 possible values for the PdfSaveOptions.OptimizationType property as detailed below.
- PdfOptimizationType.MinimumSize: Quality is compromised for the resultant file size.
- PdfOptimizationType.Standard: Quality isn’t compromised so the resultant file size will be large.
Following is the simple usage scenario.
C#
//Create an instance of PdfSaveOptions
var pdfSaveOptions = new PdfSaveOptions();
//Set the OptimizationType property to desired value
pdfSaveOptions.OptimizationType = PdfOptimizationType.MinimumSize;
//Create an instance of Workbook
//Optionally load an existing spreadsheet
var book = new Workbook(inFilePath);
//Save the spreadsheet in PDF format while passing the instance of PdfSaveOptions
book.Save(outFilePath, pdfSaveOptions);
Removed APIs
Property Workbook.SaveOptions Removed
The Workbook.SaveOptions property was marked obsoleted some time back. With this release, it has been completely removed from the public API therefore it is advised to use the Workbook.Save(Stream, SaveOptions) or Workbook.Save(string, SaveOptions) method as alternative.