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
Hi Andrew,
Thanks for your report.
Yes, this is a bug. I fixed it in the attached version. Please try it.
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
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.Columns.ColumnName);
workbookDesigner.SetDataSource(dataset);
workbookDesigner.Process();
Yep that works. However this requires a programmer
On another note, setting the background color for a cell does not seem to work?
worksheet.Cells[“A1”].Style.BackgroundColor = Color.Yellow;
- Andrew
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
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 BackgroundPattern
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.