Matrix Headings Exported to CSV.
- Does the tablix resolve the issue with headings when exporting to CSV files?
In 2005, this was controlled by the DataElementOutput but it caused the headings to print multiple times. I could never get it to work.
Does it work in 2008?
Answers
Unfortunately, I'm not familiar enough with SSRS2005 to give you an answer on whether this behavior is a bug for something that should work, is by design, or whether you need to do something else to get this to work. I would expect that the DataElementName property on the textboxes which contain your static column name should show up as the column header if you set DataElementOutput on the static columns to "Output". Are the values of the name property on those static column textboxes anything other than "Date", "Source", and "Project"? However, to answer your original question, tablix should solve this issue in SSRS2008.
For the actual csv output file, if you open it up in notepad, are you seeing something like
,,,DynamicHeading1,DynamicHeading2
1/1/09,IDO,137,JohnDoe,15000
1/1/09,IDO,468,MaryJane,10000
If possible, can you either c/p the report definition rdl or the actual csv output?
Thanks,
Ke
Ke Xu - MSFT Reporting Services- Marked As Answer byYao-Jie Tang - MSFTMSFT, ModeratorMonday, November 16, 2009 3:04 AM
All Replies
- Hello Mlevitt,
It is still there, if you will set the property DataElementoutput to output , it will print the Text Box name above the Original Text of TextBox. Is there any way to print the headings while still on 2005? When I set my DataElementOutput to Output it prints the headings but "multiple'. It seems to lose the grouping.
I can't create a 2008 rdl at this time because I have to deploy to a 2005 Report Server. I even tried placing a table instead of a rectangle and textboxes. I then created a group within this table. This got rid of my duplicates but it gets confused and places these headings along with my data rows.- Hi mlevitt,
Can you give an example of the output you are seeing, and the output you expect?
Thanks,
Ke
Ke Xu - MSFT Reporting Services - Hello Ke Xu,
After reading mlevitt post, i was trying to create a senario, So here is what we are up to.
Lets create a report , and it has header (e.g. This is my Report in a Text Box),if you export the report to cvs , it would not show this header or data whatever in the text box on the top of columns, If you will set the DataElementoutput property of this text box to output and export to CSV , you will get the Header but also you will get the name of this TextBox above this header in CVS, if you can help , would be great.....
Thanks For Example.....
Expected Result
Date Source Project DynamicHeading1 DynamicHeading2
1/1/09 IDO 137 John Doe 15,000
1/1/09 IDO 468 Mary Jane 10,000
If DataElementOutput is set to Auto, I get no Static Headings
DynamicHeading1 DynamicHeading2
1/1/09 IDO 137 John Doe 15,000
1/1/09 IDO 468 Mary Jane 10,000
If DataElementOutput is set to Output, I get Duplicated Headings next to the data rows plus I get the textbox names
textbox1 textbox2 textbox3 DynamicHeading1 DynamicHeading2
Date Source Project 1/1/09 IDO 137 John Doe 15,000
Date Source Project 1/1/09 IDO 468 Mary Jane 10,000
If DataElementOutput is set to OUtput AND
CanGrow is set to False
I get the same things as I do if I just set DataElementOutput to Output.
The above properties that I am changing, is being done on the textboxes as well al the dynamic [Columns]
I have tried just changing the textboxes and since that didn't work I also did it on the dynamic Columns and that didn't work either.
Any suggestions?- One more thing,
I get a blank column between my static columns and the dynamic columns. - Hello mlevitt,
One thing you can do, if you will change the Name Property of TextBox to the Required Heading and don't put anything in the text box, then atleast it will show you only Your Heading(that you set in name property of TextBox)
Thanks - I tried that. Here is what I get. You are correct in that I won't get duplicate headings but it still saves the location of the textbox even though I didn't put any text on it.
Date Source Project DynamicHeading1 DynamicHeading2
1/1/09 IDO 137 John Doe 15,000
1/1/09 IDO 468 Mary Jane 10,000 - Hello Mlevitt,
Maybe encoding change will help
give a try
http://behindthecode.net/Blog/post/2008/01/29/How-to-modify-Reporting-Services-CSV-export-Behavior.aspx
Will keep working on this:) - I have already looked at that article. It was very good but all it helps me with is turning on/off headings or changing the delimeter. All the other settings that can be modified don't help me with printing the headings correctly.
So right now my issue is that if I export the file to a csv, xml or text file, the headings print but they are messed up. - Hi mlevitt,
The name of the column in csv which gets output comes from the DataElementName property of the textbox which actually contains your data. If no DataElementName is explicitly specified on that textbox which contains your data, the DataElementName property of that textbox should default to the Name of that textbox. When you set DataElementOutput on the column headers as they appear on your report, what actually is happening is that the column headers are static textboxes with DataElementName defaulted to "textbox1, textbox2, textbox3" (which are the values of the textbox.Name property, since you probably didn't set a DataElementName property on those textboxes). The repeated values of "Date Source" on each row are actually the values of those static textboxes which contain your report column header names.
To get your desired output, on the textbox which actually contains the "1/19/09" value, you need to set the DataElementName/Name property of that textbox to "Date", on the textbox with "IDO", set DataElementName/Name to "Source", and on the textbox with 137,468, set the DataElementName/Name to "Project", while making sure those textboxes have DataElementOutput set to "true". On the textboxes containing your column header values of "Date", "Source", and "Project", set the DataElementOutput properties on those textboxes (which were named "textbox1, textbox2, textbox3") to "NoOutput".
HTH,
Ke
Ke Xu - MSFT Reporting Services- Proposed As Answer byKe XuMSFT, AnswererWednesday, November 11, 2009 11:24 PM
- I changed my rectangle and textboxes inside the rectangle (upper left hand corner of Matrix) to NoOutput.
I went to the "cell" that contains the actual data '1/19/09' and set DataElementName to Date. I also set the Data Output to 'Yes' on the same cell.
I did the same for the other two columns.
When I render to csv, I still don't see headers.
I see this:
DynamicHeading1 DynamicHeading2
1/1/09 IDO 137 John Doe 15,000
1/1/09 IDO 468 Mary Jane 10,000
Does this actually work for you? Hi mlevitt,
What is different between the "Date", "Source", and "Project" columns and the "DynamicHeading1", "DynamicHeading2" columns in your report? This definitely works for me in RS2008, but keep in mind that the csv renderer has changed significantly between the 2005 and 2008 versions.
Ke Xu - MSFT Reporting Services- Hi Ke,
Date, Source and Project are my static column headings, in the Matrix. DynamicHeading1 and 2 are my dynamic column headings for the columns that are pivoted by the Matrix. I am working in SSRS 2005 and I have read that there have been significant improvements to exporting to csv files in 2008.
So you don't think this is possible in 2005? Unfortunately, I'm not familiar enough with SSRS2005 to give you an answer on whether this behavior is a bug for something that should work, is by design, or whether you need to do something else to get this to work. I would expect that the DataElementName property on the textboxes which contain your static column name should show up as the column header if you set DataElementOutput on the static columns to "Output". Are the values of the name property on those static column textboxes anything other than "Date", "Source", and "Project"? However, to answer your original question, tablix should solve this issue in SSRS2008.
For the actual csv output file, if you open it up in notepad, are you seeing something like
,,,DynamicHeading1,DynamicHeading2
1/1/09,IDO,137,JohnDoe,15000
1/1/09,IDO,468,MaryJane,10000
If possible, can you either c/p the report definition rdl or the actual csv output?
Thanks,
Ke
Ke Xu - MSFT Reporting Services- Marked As Answer byYao-Jie Tang - MSFTMSFT, ModeratorMonday, November 16, 2009 3:04 AM
- Exactly. Here is my output. The only difference between your output above and mine below is that mine has one extra blank column. The Matrix appears to force an extra blank column just after the last static column and before the first dynamic column.
,,,,DynamicHeading1,DynamicHeading2
11-10-09,IDO,00137,,,
11-10-09,IDO,00245,,,
11-10-09,IDO,00247,,,
Below is the Code for the rdl. My dataset has a lot more columns than I am selecting in the demo rdl.
Thanks for continuing to look into this.
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSources>
<DataSource Name="Helios">
<rd:DataSourceID>12f088ef-fe54-470d-8ae7-379b4d570138</rd:DataSourceID>
<DataSourceReference>Helios</DataSourceReference>
</DataSource>
</DataSources>
<InteractiveHeight>11in</InteractiveHeight>
<rd:DrawGrid>true</rd:DrawGrid>
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:SnapToGrid>true</rd:SnapToGrid>
<RightMargin>1in</RightMargin>
<LeftMargin>1in</LeftMargin>
<BottomMargin>1in</BottomMargin>
<rd:ReportID>13f8be20-9146-4275-b46e-c14f8a34f59c</rd:ReportID>
<DataSets>
<DataSet Name="DataSet1">
<Fields>
<Field Name="ExtractCreatedDate">
<DataField>ExtractCreatedDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="SourceName">
<DataField>SourceName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectCode">
<DataField>ProjectCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Name">
<DataField>Name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectType">
<DataField>ProjectType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AdminProjectSubType">
<DataField>AdminProjectSubType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OrganizationToProvideResourcesTo">
<DataField>OrganizationToProvideResourcesTo</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OrganizationCodeToProvideResourcesTo">
<DataField>OrganizationCodeToProvideResourcesTo</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="IntercompanyProjectCanBeUsedMultipleTimes">
<DataField>IntercompanyProjectCanBeUsedMultipleTimes</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ContractType">
<DataField>ContractType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientName">
<DataField>ClientName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientSunDB">
<DataField>ClientSunDB</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientCode">
<DataField>ClientCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressLine1">
<DataField>ClientAddressLine1</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressLine2">
<DataField>ClientAddressLine2</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressLine3">
<DataField>ClientAddressLine3</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressLine4">
<DataField>ClientAddressLine4</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientCity">
<DataField>ClientCity</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressStateOrProvince">
<DataField>ClientAddressStateOrProvince</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressCountryCode">
<DataField>ClientAddressCountryCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressPostalCode">
<DataField>ClientAddressPostalCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ClientAddressAttention">
<DataField>ClientAddressAttention</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="BusinessUnit">
<DataField>BusinessUnit</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Segment">
<DataField>Segment</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Division">
<DataField>Division</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProductCode">
<DataField>ProductCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProductCodeProjectCodePortion">
<DataField>ProductCodeProjectCodePortion</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProductDescription">
<DataField>ProductDescription</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="LocationCode">
<DataField>LocationCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="LocationName">
<DataField>LocationName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AllowTime">
<DataField>AllowTime</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AllowExpense">
<DataField>AllowExpense</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RequireEmployeeDailyProgressReport">
<DataField>RequireEmployeeDailyProgressReport</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RequireProjectManagerStatusReport">
<DataField>RequireProjectManagerStatusReport</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RequireCommentsOnTimeEntry">
<DataField>RequireCommentsOnTimeEntry</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RequireOnOffSiteDesignation">
<DataField>RequireOnOffSiteDesignation</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RequireTicketNumber">
<DataField>RequireTicketNumber</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="HeliosBusinessUnit">
<DataField>HeliosBusinessUnit</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OrganizationName">
<DataField>OrganizationName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OrganizationCode">
<DataField>OrganizationCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OfficeName">
<DataField>OfficeName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OfficeCode">
<DataField>OfficeCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="DepartmentName">
<DataField>DepartmentName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="DepartmentCode">
<DataField>DepartmentCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="StartDate">
<DataField>StartDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="EndDate">
<DataField>EndDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectStatus">
<DataField>ProjectStatus</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectClosedDate">
<DataField>ProjectClosedDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ApprovalType">
<DataField>ApprovalType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="PrimaryProjectManagerName">
<DataField>PrimaryProjectManagerName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="PrimaryProjectManagerEmployeeCode">
<DataField>PrimaryProjectManagerEmployeeCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectApprovalLimitOverride">
<DataField>ProjectApprovalLimitOverride</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="ProjectCurrrencyCode">
<DataField>ProjectCurrrencyCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RateUnit">
<DataField>RateUnit</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ReceivingRevenue">
<DataField>ReceivingRevenue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="TaxCode">
<DataField>TaxCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="TaxDescription">
<DataField>TaxDescription</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="TaxRate">
<DataField>TaxRate</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="SunDBCode">
<DataField>SunDBCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="InvoiceReferenceCode">
<DataField>InvoiceReferenceCode</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="NumberOfDaysToDueDate">
<DataField>NumberOfDaysToDueDate</DataField>
<rd:TypeName>System.Int16</rd:TypeName>
</Field>
<Field Name="InvoiceLocale">
<DataField>InvoiceLocale</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T0_Override">
<DataField>T0_Override</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T1_Override">
<DataField>T1_Override</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T2_Override">
<DataField>T2_Override</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ContractSigned">
<DataField>ContractSigned</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ContractDate">
<DataField>ContractDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="SeparateInvoicesForTimeAndExpense">
<DataField>SeparateInvoicesForTimeAndExpense</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MHoldTime">
<DataField>T&MHoldTime</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MHoldTimeDate">
<DataField>T&MHoldTimeDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MHoldExpense">
<DataField>T&MHoldExpense</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MHoldExpenseDate">
<DataField>T&MHoldExpenseDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MTimeJE">
<DataField>T&MTimeJE</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MExpensesJE">
<DataField>T&MExpensesJE</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MCapped">
<DataField>T&MCapped</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MCapType">
<DataField>T&MCapType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="T_MCapAmount">
<DataField>T&MCapAmount</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="ExcludeExpensesFromPOC">
<DataField>ExcludeExpensesFromPOC</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeExpenseBillingType">
<DataField>FixedFeeExpenseBillingType</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeExpenseJournals">
<DataField>FixedFeeExpenseJournals</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeMilestoneJournals">
<DataField>FixedFeeMilestoneJournals</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeContractCompleted">
<DataField>FixedFeeContractCompleted</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeContractCompletionDate">
<DataField>FixedFeeContractCompletionDate</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeTimeActivity">
<DataField>FixedFeeTimeActivity</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeTimeExpenseRevenue">
<DataField>FixedFeeTimeExpenseRevenue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeTimeRevenue">
<DataField>FixedFeeTimeRevenue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeTimeDeferred">
<DataField>FixedFeeTimeDeferred</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeExpenseExpenseRevenue">
<DataField>FixedFeeExpenseExpenseRevenue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeExpenseActivityRevenue">
<DataField>FixedFeeExpenseActivityRevenue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="FixedFeeExpenseActivityDeferred">
<DataField>FixedFeeExpenseActivityDeferred</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ProjectOrganizationOID">
<DataField>ProjectOrganizationOID</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="ProjectOID">
<DataField>ProjectOID</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="OrganizationID">
<DataField>OrganizationID</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="EntityID">
<DataField>EntityID</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="CustomFieldName">
<DataField>CustomFieldName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ForEntityTypeID">
<DataField>ForEntityTypeID</DataField>
<rd:TypeName>System.Int16</rd:TypeName>
</Field>
<Field Name="EntityOID">
<DataField>EntityOID</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="CustomFieldValue">
<DataField>CustomFieldValue</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>Helios</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>APJ_Projects_sp</CommandText>
</Query>
</DataSet>
</DataSets>
<Width>6.5in</Width>
<Body>
<ReportItems>
<Matrix Name="matrix1">
<MatrixColumns>
<MatrixColumn>
<Width>1in</Width>
</MatrixColumn>
</MatrixColumns>
<DataSetName>DataSet1</DataSetName>
<RowGroupings>
<RowGrouping>
<Width>1in</Width>
<DynamicRows>
<Grouping Name="matrix1_ExtractCreatedDate">
<GroupExpressions>
<GroupExpression>=Fields!ExtractCreatedDate.Value</GroupExpression>
</GroupExpressions>
</Grouping>
<ReportItems>
<Textbox Name="ExtractCreatedDate">
<rd:DefaultName>ExtractCreatedDate</rd:DefaultName>
<DataElementOutput>Output</DataElementOutput>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>3</ZIndex>
<CanGrow>true</CanGrow>
<DataElementName>Date</DataElementName>
<Value>=Fields!ExtractCreatedDate.Value</Value>
</Textbox>
</ReportItems>
</DynamicRows>
</RowGrouping>
<RowGrouping>
<Width>1in</Width>
<DynamicRows>
<Grouping Name="matrix1_SourceName">
<GroupExpressions>
<GroupExpression>=Fields!SourceName.Value</GroupExpression>
</GroupExpressions>
</Grouping>
<ReportItems>
<Textbox Name="SourceName">
<rd:DefaultName>SourceName</rd:DefaultName>
<DataElementOutput>Output</DataElementOutput>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<DataElementName>Source</DataElementName>
<Value>=Fields!SourceName.Value</Value>
</Textbox>
</ReportItems>
</DynamicRows>
</RowGrouping>
<RowGrouping>
<Width>1in</Width>
<DynamicRows>
<Grouping Name="matrix1_ProjectCode">
<GroupExpressions>
<GroupExpression>=Fields!ProjectCode.Value</GroupExpression>
</GroupExpressions>
</Grouping>
<ReportItems>
<Textbox Name="ProjectCode">
<rd:DefaultName>ProjectCode</rd:DefaultName>
<DataElementOutput>Output</DataElementOutput>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<DataElementName>Project</DataElementName>
<Value>=Fields!ProjectCode.Value</Value>
</Textbox>
</ReportItems>
</DynamicRows>
</RowGrouping>
</RowGroupings>
<Top>0.25in</Top>
<ColumnGroupings>
<ColumnGrouping>
<Height>0.25in</Height>
<DynamicColumns>
<Grouping Name="matrix1_CustomFieldName">
<GroupExpressions>
<GroupExpression>=Fields!CustomFieldName.Value</GroupExpression>
</GroupExpressions>
</Grouping>
<ReportItems>
<Textbox Name="CustomFieldName">
<rd:DefaultName>CustomFieldName</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>4</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!CustomFieldName.Value</Value>
</Textbox>
</ReportItems>
</DynamicColumns>
</ColumnGrouping>
</ColumnGroupings>
<Width>4in</Width>
<Corner>
<ReportItems>
<Rectangle Name="rectangle1">
<ZIndex>5</ZIndex>
<DataElementOutput>Output</DataElementOutput>
<ReportItems>
<Textbox Name="textbox3">
<rd:DefaultName>textbox3</rd:DefaultName>
<DataElementOutput>NoOutput</DataElementOutput>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<Left>2in</Left>
<Value>Project</Value>
</Textbox>
<Textbox Name="textbox2">
<rd:DefaultName>textbox2</rd:DefaultName>
<DataElementOutput>NoOutput</DataElementOutput>
<Width>1in</Width>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Left>1in</Left>
<Value>Source</Value>
</Textbox>
<Textbox Name="textbox1">
<rd:DefaultName>textbox1</rd:DefaultName>
<DataElementOutput>NoOutput</DataElementOutput>
<Width>1in</Width>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Value>Date</Value>
</Textbox>
</ReportItems>
</Rectangle>
</ReportItems>
</Corner>
<MatrixRows>
<MatrixRow>
<Height>0.25in</Height>
<MatrixCells>
<MatrixCell>
<ReportItems>
<Textbox Name="CustomFieldValue">
<rd:DefaultName>CustomFieldValue</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Value>=First(Fields!CustomFieldValue.Value)</Value>
</Textbox>
</ReportItems>
</MatrixCell>
</MatrixCells>
</MatrixRow>
</MatrixRows>
<Height>0.5in</Height>
<Left>0.25in</Left>
</Matrix>
</ReportItems>
<Height>2in</Height>
</Body>
<Language>en-US</Language>
<TopMargin>1in</TopMargin>
</Report>
- Hi mlevitt,
I looked at your report and tried it in SSRS2008 (while replacing your data w/ some dummy data of my own) and it works as expected in SSRS2008. That being, I'm not sure why you're getting blank column headers for SSRS2005 export. This very well might have been a bug in SSRS2005 CSV export. So if you try setting DataElementOutput to NoOutput on everything except the parts of your report which correspond to the "Date", "Source", and "Project" columns, do you get an empty first row (for the headers), and data rows afterwards? The other thing I would try based on the structure of your RDL is to explicitly set DataElementOutput="Output" and DataElementName on the <Grouping> elements contained within your <RowGrouping> elements which correspond to the "Date", "Source", and "Project" columns.
Thanks,
Ke
Ke Xu - MSFT Reporting Services


