.net报告xml数据源不断得到LocalProcessingException

本文关键字:LocalProcessingException 报告 xml 数据源 net | 更新日期: 2023-09-27 18:10:40

我正试图使用c#在。net中创建一个有2列的表。问题是,我一直得到相同的异常,这是LocalProcessingException,并发生在这一行:

  byte[] bytes = lr.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

的c#代码是这样的:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web.Security;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Microsoft.Reporting.WebForms;
    using System.IO;
    public partial class Repo : System.Web.UI.Page
    {
private LocalReport lr = new LocalReport();
private DataTable LoadSalesData()
{
    // Load data from XML file.
    DataSet dataSet = new DataSet();
    dataSet.ReadXml(@"c:'Reports'xxx.xml");
    return dataSet.Tables[0];
}
protected void Page_Load(object sender, EventArgs e)
{        
    lr.DataSources.Add(new ReportDataSource("Sales", LoadSalesData()));
    lr.ReportPath = "Report.rdlc"; //@"c:'Reports'Report.rdlc";
    //this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
    //this.ReportViewer1.LocalReport.ReportPath =
    //  @"c:'Reports'Report.rdlc";
    //ReportViewer1.LocalReport.DataSources.Add(
    // new ReportDataSource("Sales", LoadSalesData()));
}
protected void Button1_Click(object sender, EventArgs e)
{
    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;
    byte[] bytes = lr.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

    FileStream fs = new FileStream(@"c:'output.pdf", FileMode.Create);
    fs.Write(bytes, 0, bytes.Length);
    fs.Close();
    Response.AppendHeader("content-disposition", "attachment; filename=" + "mira.pdf");  // Forçar o download dialog
    string type = "Application/pdf";
    Response.ContentType = type;
    Response.WriteFile(@"c:'output.pdf");
    Response.End();
    //File.Delete(@"c:'output.pdf");
    //Label1.Text = "Report exported to output.xls";
    }
    }

xml文件xxx.xml如下所示:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <DataSet1 xmlns="http://localhost:1118/WebSite1/App_Code/DataSet1.xsd">
    <DataTable1>
    <Pesquisa>Teste</Pesquisa>
    <Valor>2</Valor>
    </DataTable1>
    <DataTable1>
    <Pesquisa>Rei</Pesquisa>
    <Valor>3</Valor>
    </DataTable1>
    <DataTable1>
    <Pesquisa>Volta</Pesquisa>
    <Valor>4</Valor>
    </DataTable1>
    <DataTable1>
    <Pesquisa>alto</Pesquisa>
    <Valor>5</Valor>
    </DataTable1>
    <DataTable1>
    <Pesquisa>yes</Pesquisa>
    <Valor>6</Valor>
    </DataTable1>
    </DataSet1>

模式文件如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:annotation>
    <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
    <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
    <Connections />
    <Tables />
    <Sources />
    </DataSource>
    </xs:appinfo>
    </xs:annotation>
    <xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataSet1" msprop:Generator_DataSetName="DataSet1">
   <xs:complexType>
   <xs:choice minOccurs="0" maxOccurs="unbounded">
   <xs:element name="DataTable1" msprop:Generator_TableClassName="DataTable1DataTable" msprop:Generator_TableVarName="tableDataTable1" msprop:Generator_TablePropName="DataTable1" msprop:Generator_RowDeletingName="DataTable1RowDeleting" msprop:Generator_UserTableName="DataTable1" msprop:Generator_RowChangingName="DataTable1RowChanging" msprop:Generator_RowEvHandlerName="DataTable1RowChangeEventHandler" msprop:Generator_RowDeletedName="DataTable1RowDeleted" msprop:Generator_RowEvArgName="DataTable1RowChangeEvent" msprop:Generator_RowChangedName="DataTable1RowChanged" msprop:Generator_RowClassName="DataTable1Row">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="Pesquisa" msprop:Generator_ColumnVarNameInTable="columnPesquisa" msprop:Generator_ColumnPropNameInRow="Pesquisa" msprop:Generator_ColumnPropNameInTable="PesquisaColumn" msprop:Generator_UserColumnName="Pesquisa" type="xs:string" minOccurs="0" />
          <xs:element name="Valor" msprop:Generator_ColumnVarNameInTable="columnValor" msprop:Generator_ColumnPropNameInRow="Valor" msprop:Generator_ColumnPropNameInTable="ValorColumn" msprop:Generator_UserColumnName="Valor" type="xs:string" minOccurs="0" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>

RDLC文件看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">
    <DataSources>
    <DataSource Name="DataSet1">
    <ConnectionProperties>
    <DataProvider>System.Data.DataSet</DataProvider>
    <ConnectString>/* Local Connection */</ConnectString>
    </ConnectionProperties>
    <rd:DataSourceID>e8717e69-8aa7-47ec-8afa-2f0105dab622</rd:DataSourceID>
    </DataSource>
    </DataSources>
    <DataSets>
    <DataSet Name="DataSet1">
    <Fields>
    <Field Name="Pesquisa">
      <DataField>Pesquisa</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="Valor">
      <DataField>Valor</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    </Fields>
    <Query>
    <DataSourceName>DataSet1</DataSourceName>
    <CommandText>SELECT * FROM DataTable1</CommandText>
    </Query>
    <rd:DataSetInfo>
    <rd:DataSetName>DataSet1</rd:DataSetName>
    <rd:SchemaPath>C:'Documents and Settings'randomname'My Documents'Visual Studio 2010'WebSites'WebSite1'App_Code'DataSet1.xsd</rd:SchemaPath>
    <rd:TableName>DataTable1</rd:TableName>
    <rd:TableAdapterFillMethod />
    <rd:TableAdapterGetDataMethod />
    <rd:TableAdapterName />
    </rd:DataSetInfo>
    </DataSet>
    </DataSets>
    <Body>
    <ReportItems>
    <Tablix Name="Tablix1">
    <TablixBody>
      <TablixColumns>
        <TablixColumn>
          <Width>0.98425in</Width>
        </TablixColumn>
        <TablixColumn>
          <Width>0.98425in</Width>
        </TablixColumn>
      </TablixColumns>
      <TablixRows>
        <TablixRow>
          <Height>0.23622in</Height>
          <TablixCells>
            <TablixCell>
              <CellContents>
                <Textbox Name="Textbox1">
                  <CanGrow>true</CanGrow>
                  <KeepTogether>true</KeepTogether>
                  <Paragraphs>
                    <Paragraph>
                      <TextRuns>
                        <TextRun>
                          <Value>Pesquisa</Value>
                          <Style />
                        </TextRun>
                      </TextRuns>
                      <Style />
                    </Paragraph>
                  </Paragraphs>
                  <rd:DefaultName>Textbox1</rd:DefaultName>
                  <Style>
                    <Border>
                      <Color>LightGrey</Color>
                      <Style>Solid</Style>
                    </Border>
                    <PaddingLeft>2pt</PaddingLeft>
                    <PaddingRight>2pt</PaddingRight>
                    <PaddingTop>2pt</PaddingTop>
                    <PaddingBottom>2pt</PaddingBottom>
                  </Style>
                </Textbox>
              </CellContents>
            </TablixCell>
            <TablixCell>
              <CellContents>
                <Textbox Name="Textbox3">
                  <CanGrow>true</CanGrow>
                  <KeepTogether>true</KeepTogether>
                  <Paragraphs>
                    <Paragraph>
                      <TextRuns>
                        <TextRun>
                          <Value>Valor</Value>
                          <Style />
                        </TextRun>
                      </TextRuns>
                      <Style />
                    </Paragraph>
                  </Paragraphs>
                  <rd:DefaultName>Textbox3</rd:DefaultName>
                  <Style>
                    <Border>
                      <Color>LightGrey</Color>
                      <Style>Solid</Style>
                    </Border>
                    <PaddingLeft>2pt</PaddingLeft>
                    <PaddingRight>2pt</PaddingRight>
                    <PaddingTop>2pt</PaddingTop>
                    <PaddingBottom>2pt</PaddingBottom>
                  </Style>
                </Textbox>
              </CellContents>
            </TablixCell>
          </TablixCells>
        </TablixRow>
        <TablixRow>
          <Height>0.23622in</Height>
          <TablixCells>
            <TablixCell>
              <CellContents>
                <Textbox Name="Pesquisa">
                  <CanGrow>true</CanGrow>
                  <KeepTogether>true</KeepTogether>
                  <Paragraphs>
                    <Paragraph>
                      <TextRuns>
                        <TextRun>
                          <Value>=Fields!Pesquisa.Value</Value>
                          <Style />
                        </TextRun>
                      </TextRuns>
                      <Style />
                    </Paragraph>
                  </Paragraphs>
                  <rd:DefaultName>Pesquisa</rd:DefaultName>
                  <Style>
                    <Border>
                      <Color>LightGrey</Color>
                      <Style>Solid</Style>
                    </Border>
                    <PaddingLeft>2pt</PaddingLeft>
                    <PaddingRight>2pt</PaddingRight>
                    <PaddingTop>2pt</PaddingTop>
                    <PaddingBottom>2pt</PaddingBottom>
                  </Style>
                </Textbox>
              </CellContents>
            </TablixCell>
            <TablixCell>
              <CellContents>
                <Textbox Name="Valor">
                  <CanGrow>true</CanGrow>
                  <KeepTogether>true</KeepTogether>
                  <Paragraphs>
                    <Paragraph>
                      <TextRuns>
                        <TextRun>
                          <Value>=Fields!Valor.Value</Value>
                          <Style />
                        </TextRun>
                      </TextRuns>
                      <Style />
                    </Paragraph>
                  </Paragraphs>
                  <rd:DefaultName>Valor</rd:DefaultName>
                  <Style>
                    <Border>
                      <Color>LightGrey</Color>
                      <Style>Solid</Style>
                    </Border>
                    <PaddingLeft>2pt</PaddingLeft>
                    <PaddingRight>2pt</PaddingRight>
                    <PaddingTop>2pt</PaddingTop>
                    <PaddingBottom>2pt</PaddingBottom>
                  </Style>
                </Textbox>
              </CellContents>
            </TablixCell>
          </TablixCells>
        </TablixRow>
      </TablixRows>
    </TablixBody>
    <TablixColumnHierarchy>
      <TablixMembers>
        <TablixMember />
        <TablixMember />
      </TablixMembers>
    </TablixColumnHierarchy>
    <TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
        </TablixMember>
        <TablixMember>
          <Group Name="Details" />
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>
    <DataSetName>DataSet1</DataSetName>
    <Top>1.12924cm</Top>
    <Left>5.78591cm</Left>
    <Height>1.2cm</Height>
    <Width>5cm</Width>
    <Style>
      <Border>
        <Style>None</Style>
      </Border>
    </Style>
    </Tablix>
    </ReportItems>
    <Height>2in</Height>
    <Style />
    </Body>
    <Width>6.5in</Width>
    <Page>
    <PageHeight>29.7cm</PageHeight>
    <PageWidth>21cm</PageWidth>
    <LeftMargin>2cm</LeftMargin>
    <RightMargin>2cm</RightMargin>
    <TopMargin>2cm</TopMargin>
    <BottomMargin>2cm</BottomMargin>
    <ColumnSpacing>0.13cm</ColumnSpacing>
    <Style />
    </Page>
    <rd:ReportID>7c07e52a-efdf-49fe-85d5-bb1a6884d446</rd:ReportID>
    <rd:ReportUnitType>Cm</rd:ReportUnitType>
    </Report>

下面是堆栈跟踪:

    at Microsoft.Reporting.WebForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, CreateAndRegisterStream createStreamCallback, Warning[]& warnings)
    at Microsoft.Reporting.WebForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
    at Microsoft.Reporting.WebForms.LocalReport.Render(String format, String deviceInfo, PageCountMode pageCountMode, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
    at Microsoft.Reporting.WebForms.Report.Render(String format, String deviceInfo, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
    at Repo.Button1_Click(Object sender, EventArgs e) in c:'Documents and Settings'randomname'My Documents'Visual Studio 2010'WebSites'WebSite1'Repo.aspx.cs:line 48
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
你能帮我一下吗?如果你需要更多的信息或文件,请让我知道。感谢您的宝贵时间。

.net报告xml数据源不断得到LocalProcessingException

我发现有时需要查看几个innerexception,直到找到正确的异常。我编写了一个循环来挖掘最深层的内部异常并报告它。

相关文章:
  • 没有找到相关文章