Problems with SmarMarker VariableArray


#1

Using the evaluation version of Aspose.Cells I am having some troubles with smart markers.

Both single variable and datasource markers work like a charm. however array markers dont seem to work. Here is the code + marker contained in the excel file:


String[] arr = new String[2];
arr[0] = “foo”;
arr[1] = “bar”;
designer.SetDataSource(“test”, arr);
designer.Process();



The marker in the excel file is: &=$test

When I run this nothing is replaced in the excel file. I have also tried with:
&=$test[0]

This replaces the marker with white space.

Any help appriciated.


- Andrew


#2

Hi Andrew,

Thanks for your report.

Yes, this is a bug. I fixed it in the attached version. Please try it.


#3

Thank you for the quick reply.

The version you sent me works. I.e. by adding &=$VariableArray to a field it will fill successive rows with data from the array.

Is a there a way or any plans to implement a way where you can have a dataset or array fill a variable number of columns instead of rows?

This would be very helpful in my case since I am displaying a table of data where my dataset has a variable number of columns.


Cheers,

Andrew


#4

Hi Andrew,

If your dataset has variable number of columns that cannot be determined when you create the designer template, you can create the smart markers at run time.

For example:

Workbook workbook = workbookDesigner.Workbook;

DataTable dt = dataset.Tables["Table1"];

for(int i = 0; i < dt.Columns.Count; i ++)

workbook.Worksheets[0].Cells[0, i].PutValue("&=Table1." + dt.ColumnsIdea [I].ColumnName);

workbookDesigner.SetDataSource(dataset);

workbookDesigner.Process();


#5

Yep that works. However this requires a programmer :slight_smile:

On another note, setting the background color for a cell does not seem to work?

worksheet.Cells[“A1”].Style.BackgroundColor = Color.Yellow;


- Andrew


#6

Laurence,

I found another issue with setting the Style.Number for a Cell. Here is the code I am using for setting the Background color and Style.Number, none of which seem to work:

Workbook workbook = new Workbook();
workbook.Worksheets.Add();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Name = “Report”;

worksheet.Cells[“A1”].Style.BackgroundColor = Color.Yellow;
worksheet.Cells[“A2”].PutValue(“100.00”);
worksheet.Cells[“A2”].Style.Number = 2;

workbook.Save(“C:\test.xls”, FileFormatType.Default);


Please advise.

- Andrew


#7

Hi Andrew,

Please change your code to:

Workbook workbook = new Workbook();
workbook.Worksheets.Add();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "Report";

//For background settings, please check http://www.aspose.com/wiki/default.aspx/Aspose.Cells/BackgroundPattern.html

worksheet.Cells["A1"].Style.ForegroundColor = Color.Yellow;

worksheet.Cells["A1"].Style.Pattern = BackgroundType.Solid;

//Number format only applies to numeric value, not string value

worksheet.Cells["A2"].PutValue(100.00);

// or you can change it to:

//worksheet.Cells["A2"].PutValue("100.00", true);

worksheet.Cells["A2"].Style.Number = 2;

workbook.Save("C:\\test.xls", FileFormatType.Default);

To import dynamic columns of data, I think you may have to write a few lines of code to get the flexibility.