zoukankan      html  css  js  c++  java
  • mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)

    给一段代码做参考

    public ActionResult RdlcReport(string code)
            {
                LocalReport localReport = new LocalReport();
                EasyMan.Dtos.ErrorInfo err = new EasyMan.Dtos.ErrorInfo();
                err.IsError = false;
                try
                {
                    var report = _reportAppService.GetReport(code, 0, false);
                    DataTable dt = _reportAppService.GetDataTableFromCode(code, "", ref err);
                    #region
                    string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
                    <Report xmlns:rd=""http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"" xmlns:cl=""http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition"" xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"">
                      <AutoRefresh>0</AutoRefresh>
                      <DataSources>
                        <DataSource Name=""DummyDataSource"">
                          <ConnectionProperties>
                            <DataProvider>System.Data.DataSet</DataProvider>
                            <ConnectString>/* Local Connection */</ConnectString>
                          </ConnectionProperties>
                          <rd:DataSourceID>31131605-8877-466c-bee6-e8f30eff39f3</rd:DataSourceID>
                        </DataSource>
                      </DataSources>
                      <DataSets>
                        <DataSet Name=""DataSet1"">
                          <Query>
                            <DataSourceName>DummyDataSource</DataSourceName>
                            <CommandText>/* Local Query */</CommandText>
                          </Query>
                          <Fields>
                            <Field Name=""ID"">
                              <DataField>ID</DataField>
                              <rd:TypeName>Decimal</rd:TypeName>
                            </Field>
                            <Field Name=""USER_NAME"">
                              <DataField>USER_NAME</DataField>
                              <rd:TypeName>String</rd:TypeName>
                            </Field>
                            <Field Name=""IS_LOCKOUT_ENABLED"">
                              <DataField>IS_LOCKOUT_ENABLED</DataField>
                              <rd:TypeName>Int16</rd:TypeName>
                            </Field>
                            <Field Name=""PHONE_NUMBER"">
                              <DataField>PHONE_NUMBER</DataField>
                              <rd:TypeName>String</rd:TypeName>
                            </Field>
                            <Field Name=""CREATE_TIME"">
                              <DataField>CREATE_TIME</DataField>
                              <rd:TypeName>DateTime</rd:TypeName>
                            </Field>
                          </Fields>
                          <rd:DataSetInfo>
                            <rd:DataSetName>DummyDataSource</rd:DataSetName>
                            <rd:SchemaPath />
                            <rd:TableName>DataTable1</rd:TableName>
                            <rd:TableAdapterFillMethod />
                            <rd:TableAdapterGetDataMethod />
                            <rd:TableAdapterName />
                          </rd:DataSetInfo>
                        </DataSet>
                      </DataSets>
                      <ReportSections>
                        <ReportSection>
                          <Body>
                            <ReportItems>
                              <Tablix Name=""Tablix1"">
                                <TablixBody>
                                  <TablixColumns>
                                    <TablixColumn>
                                      <Width>2.5cm</Width>
                                    </TablixColumn>
                                    <TablixColumn>
                                      <Width>2.5cm</Width>
                                    </TablixColumn>
                                    <TablixColumn>
                                      <Width>2.5cm</Width>
                                    </TablixColumn>
                                    <TablixColumn>
                                      <Width>2.5cm</Width>
                                    </TablixColumn>
                                    <TablixColumn>
                                      <Width>2.5cm</Width>
                                    </TablixColumn>
                                  </TablixColumns>
                                  <TablixRows>
                                    <TablixRow>
                                      <Height>0.6cm</Height>
                                      <TablixCells>
                                        <TablixCell>
                                          <CellContents>
                                            <Textbox Name=""Textbox1"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>ID</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>USER NAME</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>
                                        <TablixCell>
                                          <CellContents>
                                            <Textbox Name=""Textbox5"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>IS LOCKOUT ENABLED</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>Textbox5</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=""Textbox7"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>PHONE NUMBER</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>Textbox7</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=""Textbox9"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>CREATE TIME</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>Textbox9</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.6cm</Height>
                                      <TablixCells>
                                        <TablixCell>
                                          <CellContents>
                                            <Textbox Name=""ID"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>=Fields!ID.Value</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>ID</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=""USER_NAME"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>=Fields!USER_NAME.Value</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>USER_NAME</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=""IS_LOCKOUT_ENABLED"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>=Fields!IS_LOCKOUT_ENABLED.Value</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>IS_LOCKOUT_ENABLED</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=""PHONE_NUMBER"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>=Fields!PHONE_NUMBER.Value</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>PHONE_NUMBER</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=""CREATE_TIME"">
                                              <CanGrow>true</CanGrow>
                                              <KeepTogether>true</KeepTogether>
                                              <Paragraphs>
                                                <Paragraph>
                                                  <TextRuns>
                                                    <TextRun>
                                                      <Value>=Fields!CREATE_TIME.Value</Value>
                                                      <Style />
                                                    </TextRun>
                                                  </TextRuns>
                                                  <Style />
                                                </Paragraph>
                                              </Paragraphs>
                                              <rd:DefaultName>CREATE_TIME</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 />
                                    <TablixMember />
                                    <TablixMember />
                                    <TablixMember />
                                  </TablixMembers>
                                </TablixColumnHierarchy>
                                <TablixRowHierarchy>
                                  <TablixMembers>
                                    <TablixMember>
                                      <KeepWithGroup>After</KeepWithGroup>
                                    </TablixMember>
                                    <TablixMember>
                                      <Group Name=""详细信息"" />
                                    </TablixMember>
                                  </TablixMembers>
                                </TablixRowHierarchy>
                                <DataSetName>DataSet1</DataSetName>
                                <Height>1.2cm</Height>
                                <Width>12.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>
                        </ReportSection>
                      </ReportSections>
                      <rd:ReportUnitType>Cm</rd:ReportUnitType>
                      <rd:ReportID>74c3f382-2b1e-4b36-aa0f-860307cf4cb1</rd:ReportID>
                    </Report>";
                    #endregion
                    localReport.LoadReportDefinition(GenerateRdlc(xml));
                    ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);
                    localReport.DataSources.Add(reportDataSource);
                    localReport.Refresh();
    
                    Warning[] warnings;
                    string[] streamids;
                    string mimeType;
                    string encoding;
                    string extension;
                    string deviceInfo =
                     "<DeviceInfo>" +
                     "<SimplePageHeaders>True</SimplePageHeaders>" +
                     "</DeviceInfo>";
                    byte[] bytes = localReport.Render("Excel", deviceInfo, out mimeType,
        out encoding, out extension, out streamids, out warnings);
                    return new ReportsResult(bytes, mimeType);
                    return File(bytes, mimeType);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
    View Code

     其中xml变量为rdlc配置xml


    一些示例网站:

    基于MVC4+EasyUIWeb开发框架经验总结(15--MVC项目中使用RDLC报表

    []Asp.net MVC中使用Rdlc输出文件

    在 MVC 4 中使用RDLC 报表

    ASP.NET MVC应用程序展示RDLC报表

    ReportViewer报表导出成Excel,Image,PDF---LocalReport.Render

    ASP.NET MVC应用程序展示RDLC报表

  • 相关阅读:
    【记录】20060430 11:30:00 本Blog访问量突破100000 !
    ESFramework介绍之(24)―― 日志记录IEsbLogger
    ESFramework介绍之(20)―― 插件自动升级
    ESFramework介绍之(21)-- Tcp组件接口ITcp介绍
    ESFramework介绍之(17)―― 支持漫游用户和跨区域功能请求
    python标准库学习9
    python标准库学习5 bisect — Array bisection algorithm
    C++中四种显示类型转换总结
    BeautifulSoup学习笔记
    jdbc连接数据库(水文)
  • 原文地址:https://www.cnblogs.com/senyier/p/7482506.html
Copyright © 2011-2022 走看看