grape_puppet 发表于 2016-4-26 08:32:23

导出excel问题

本帖最后由 Lenka.Guo 于 2016-4-26 14:26 编辑

导出excel时,如果有数据换行,在excel中就会跨单元格显示,怎么让数据在一个单元格中展示?

Lenka.Guo 发表于 2016-4-26 09:35:14

本帖最后由 Lenka.Guo 于 2016-4-26 09:37 编辑

您好,
我使用ActiveReports 10 SP1 版本 导出RDL 报表为Excelxls 和 xlsx 格式,都没有出现 您说的问题。您使用的是哪种类型的报表?
报表预览:





导出xls




导出Xlsx


导出文件和报表模板:












grape_puppet 发表于 2016-4-26 09:59:14

Lenka.Guo 发表于 2016-4-26 09:35
您好,
我使用ActiveReports 10 SP1 版本 导出RDL 报表为Excelxls 和 xlsx 格式,都没有出现 您说的问题 ...

ar9,rdl报表

grape_puppet 发表于 2016-4-26 10:06:44

Lenka.Guo 发表于 2016-4-26 09:35
您好,
我使用ActiveReports 10 SP1 版本 导出RDL 报表为Excelxls 和 xlsx 格式,都没有出现 您说的问题 ...

你用ar9试一下可以吗

Lenka.Guo 发表于 2016-4-26 10:11:00

grape_puppet 发表于 2016-4-26 09:59
ar9,rdl报表

已在AR9中测试,还是没能重现您的问题。 报表模板使用RDL 报表 和Table控件。
还得麻烦您上传报表模板,我在这边测试,帮您调整下。



grape_puppet 发表于 2016-4-26 10:52:41


protected void btnExcel_Click(object sender, EventArgs e)
    {
      GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();
      System.IO.MemoryStream ms = new System.IO.MemoryStream();
      XlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;

      GenerateReport();//加载模板和数据源
      XlsExport1.Export(report.Document, ms);
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
      Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=MyExport.xlsx"));
      Response.BinaryWrite(ms.ToArray());
      Response.End();
    }这是导出按钮的实现,附件是模板,看看是否有问题。

grape_puppet 发表于 2016-4-26 10:56:11

Lenka.Guo 发表于 2016-4-26 10:11
已在AR9中测试,还是没能重现您的问题。 报表模板使用RDL 报表 和Table控件。
还得麻烦您上传报表模板, ...

模板在楼上。

Lenka.Guo 发表于 2016-4-26 14:25:35

本帖最后由 Lenka.Guo 于 2016-4-26 15:29 编辑

grape_puppet 发表于 2016-4-26 10:52
这是导出按钮的实现,附件是模板,看看是否有问题。
您好,

问题已经重现,是Excel 导出代码问题,
在将Rdl报表导出为Excel文件时,如果采用 GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 会导致多行的问题。建议您将导出代码更换为以下:


// 创建报表对象
GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"C:\Sample_PageReport.rdlx"));
GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);

//创建输出目录
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
outputDirectory.Create();

// 导出Excel文件设置
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

//设置渲染方式
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
//导出
reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());








grape_puppet 发表于 2016-4-26 15:19:29

Lenka.Guo 发表于 2016-4-26 14:25
您好,

问题已经重现,是Excel 导出代码问题,


这个代码好像不是是完整的,能否给一下完整的导出代码;另外,这个方法的导出路径是写死的,能否改成我原来的那种,手动选择下载路径。

Lenka.Guo 发表于 2016-4-26 16:10:25

grape_puppet 发表于 2016-4-26 15:19
这个代码好像不是是完整的,能否给一下完整的导出代码;另外,这个方法的导出路径是写死的,能否改成我原 ...

抱歉编辑时失误,代码已经完整。

手动选择路径之后,将路径存为变量,传给 System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel"); 就可以了。
页: [1]
查看完整版本: 导出excel问题