在 Excel Interop 中一个一个地写入单元格很慢,那么我怎样才能使这段代码更快?

问题描述 投票:0回答:0

我正在使用 Interop Excel,但遍历每一行和单元格的速度非常慢。这是当前使用的代码:

        foreach (var amministratore in amministratoriComunali)
        {
            if (provinciaEsiste.IsMatch(amministratore.luogo_nascita))
            {
                estero = false;
            }
            else
            {
                estero = true;
            }

            worksheet.Cells[rowIndex, 1] = amministratore.cognome;

            worksheet.Cells[rowIndex, 2] = amministratore.nome;

            worksheet.Cells[rowIndex, 3] = "";

            worksheet.Cells[rowIndex, 4] = "";

            worksheet.Cells[rowIndex, 5] = amministratore.data_nascita;

            if (!estero)
            {
                worksheet.Cells[rowIndex, 6] = amministratore.luogo_nascita.Substring(0, amministratore.luogo_nascita.IndexOf("(") - 1);
            }
            else
            {
                worksheet.Cells[rowIndex, 6] = amministratore.luogo_nascita;
            }

            if (!estero)
            {
                worksheet.Cells[rowIndex, 7] = amministratore.luogo_nascita.Substring(amministratore.luogo_nascita.IndexOf("(") + 1, 2);
            }
            else
            {
                if (String.IsNullOrEmpty(amministratore.luogo_nascita))
                {
                    worksheet.Cells[rowIndex, 7] = "";
                }
                else
                {
                    worksheet.Cells[rowIndex, 7] = "EE";
                }
            }

            if (!estero)
            {
                worksheet.Cells[rowIndex, 8] = "ITALIA";
            }
            else
            {
                worksheet.Cells[rowIndex, 8] = amministratore.luogo_nascita;
            }

            worksheet.Cells[rowIndex, 9] = amministratore.sesso.ToString();

            worksheet.Cells[rowIndex, 10] = "";

            worksheet.Cells[rowIndex, 11] = "S";

            worksheet.Cells[rowIndex, 12] = "ELEZIONE AMMINISTRATORI COMUNALI";

            worksheet.Cells[rowIndex, 13] = "AMMINISTRATORI COMUNALI IN CARICA";

            worksheet.Cells[rowIndex, 14] = amministratore.data_elezione;

            worksheet.Cells[rowIndex, 15] = "";

            worksheet.Cells[rowIndex, 16] = "AMMINISTRAZIONE COMUNALE";

            worksheet.Cells[rowIndex, 17] = amministratore.partito;

            worksheet.Cells[rowIndex, 18] = amministratore.descrizione_carica;

            worksheet.Cells[rowIndex, 19] = amministratore.data_entrata_in_carica;

            worksheet.Cells[rowIndex, 20] = amministratore.denominazione_comune;

            worksheet.Cells[rowIndex, 21] = "";

            worksheet.Cells[rowIndex, 22] = "";

            worksheet.Cells[rowIndex, 23] = "COMUNE";

            worksheet.Cells[rowIndex, 24] = "AMMINISTRAZIONE COMUNALE";

            worksheet.Cells[rowIndex, 25] = "MINISTERO DELL'INTERNO - AMMINISTRATORI COMUNALI IN CARICA";

            ++rowIndex;

        }

我考虑过创建一个 .csv 文件,但问题是如果我这样做并用 Microsoft Excel 打开它,“日期”字段的类型将是“日期”,而我需要它们是纯文本,所以我需要Interop Excel 指定我猜的列的类型。

有没有办法让它更快?谢谢。

c# csv excel-interop
© www.soinside.com 2019 - 2024. All rights reserved.