ReportViewer «Слишком сложное тело для экспорта в Word» - PullRequest
0 голосов
/ 06 декабря 2018

Я использую ReportViewer в VS2015, пишу на C #.Мои отчеты выглядят примерно так (не зацикливайтесь на контенте, я просто показываю, что это в основном текстовые поля):

enter image description here

Как видите, большая часть моего отчета - это текстовые поля, все поля заполняются из наборов данных.

Отчет работает безупречно.он экспортирует в Excel и PDF без проблем.Тем не менее, мои конечные пользователи хотят это в Word, и это не работает.Я получаю сообщение об ошибке:

InnerException {"Тело слишком сложное для экспорта в Word. Пожалуйста, сгруппируйте элементы ReportItems вместе в прямоугольники для упрощения."} System.Exception {Microsoft.ReportingServices.OnDemandReportRendering.ReportRenderingException}

Первоначально я использовал встроенную функцию экспорта в инструментальную полоску, а затем написал свою собственную.Код здесь:

private void button1_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.InitialDirectory = @"C:\";
    saveFileDialog.RestoreDirectory = true;
    saveFileDialog.Title = "Browse Text Files";
    saveFileDialog.DefaultExt = "docx";
    saveFileDialog.Filter = "Word Doc (*.docx) | *.docx | PDF(*.pdf) | *.pdf";
    saveFileDialog.CheckFileExists = false;
    saveFileDialog.CheckPathExists = true;

    Warning[] warnings;
    string[] streams;
    string mimeType;
    string encoding;
    string extension;

    byte[] bytes = FirstTestReport.LocalReport.Render("WordOpenXml", null, out mimeType, out encoding, out extension, out streams, out warnings);

    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        var filename = saveFileDialog.FileName;
        System.IO.FileStream file = new System.IO.FileStream(filename, System.IO.FileMode.Create);
        file.Write(bytes, 0, bytes.Length);
        file.Close();
    }
}

Что я могу сделать с моим кодом, чтобы это исправить, или это известная "ошибка" в процессе рендеринга?Я где-то читал, что ReportViewer обрабатывает каждое текстовое поле как таблицу, что и вызывает сложность.Тем не менее, сама ошибка говорит, чтобы окружить их прямоугольником?

FWIW, ошибка происходит в строке, начинающейся с "byte [] bytes ="

Этот отчет состоит примерно из 60 подотчетов,Все, что быстро и безболезненно, кроме моей собственной казни, ценится.

...