Huyyhaha Ответов: 1

Как сделать экспорт отчета по любому файлу (excel, pdf, word...)


I get this error when I try to export or save this report file

Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraReports.UI;

namespace EMR.av.FormThamSo
{
    public partial class frm_BAnoikhoa : Form
    {
        public frm_BAnoikhoa()
        {
            InitializeComponent();
        }

        private void btn_inphieu_Click(object sender, EventArgs e)
        {
            string mbn = this.txtMBN.Text;
            
            Report.repBANoiKhoa rep = new Report.repBANoiKhoa(mbn);
            rep.CreateDocument();
            rep.ShowPreviewDialog();
            

        }
    }
}

What am I missing or what was wrong? Will help me! Thank

CHill60

Недостаточно предоставленного кода, чтобы определить, в чем заключается проблема и почему вы пометили свой вопрос как LINQ?
Это хорошая идея, чтобы точно указать, какая строка выбрасывает исключение - я предполагаю, что в данном случае это rep.ShowPreviewDialog();?
Вам нужно показать, как вы настроили потоковую обработку в своем приложении, а также какую платформу вы используете (опять же, я предполагаю WinForms).
И, пожалуйста, сначала сделайте некоторые фундаментальные исследования - посмотрите на эту тему для некоторых возможных решений : c# - исключение при использовании FolderBrowserDialog[^]

Huyyhaha

да, это winform ! Я просто хочу экспортировать файл отчета в excel или pdf, что мне нужно для кода

1 Ответов

Рейтинг:
0

Richard Deeming

Сообщение об ошибке довольно ясно говорит о проблеме и ее решении:
Убедитесь, что ваша основная функция имеет STAThreadAttribute помечено на нем.


Huyyhaha

Я имею к этому отношение

Richard Deeming

Убедитесь, что ваша основная функция имеет STAThreadAttribute помечено на нем.

Huyyhaha

Я не понимаю, не могли бы вы сказать мне яснее

Richard Deeming

Ваше приложение имеет Main метод. Вы должны убедиться, что он имеет [STAThread] атрибут на нем.

[STAThread]
static void Main(string[] args)
{
    ...
}

Huyyhaha

У меня есть код абзаца в Program.cs

[STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            DevExpress.Skins.SkinManager.EnableFormSkins();
            SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.BonusSkins).Assembly);
            Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new ShareProject.frmDangNhap());
            if (ShareProject.Bien.OKLogin)
            {
                ShareProject.Bien.Serial = 0;
                ShareProject.Bien.dondientu_ma_lien_thong_cskcb = "0145679";
                ShareProject.Bien.dondientu_mat_khau_cskcb = "rqULrbcK0N";
                ShareProject.Bien.dondientu_ma_bao_hiem_cskcb = "45679";
                ShareProject.Bien.dondientu_ma_lien_thong_bacsi = "01002245HNO-CCHQ";
                ePubLic.Cap_Do_Khoa_Du_Lieu =4;
                ePubLic.ma_benh_vien_khoa = "88888";
                Application.Run(new Menu());
            }
        }

Я не знаю ,правильно ли это?

Richard Deeming

Я не знаю, почему у тебя их два Application.Run линии, но в остальном все выглядит нормально.

Вы показываете формы из фоновых потоков где-нибудь?

Huyyhaha

Я не знаю, это первый раз, когда я столкнулся с этой ошибкой