Выгрузка данных в Excel из C # с использованием set_Value выдает ошибку - PullRequest
0 голосов
/ 25 февраля 2011

Я пытаюсь записать данные в файл Excel.Ниже приведен код, который мы используем.

Примечание: dt - это DataTable, переданный из другой функции.

        ApplicationClass xlsApp = new ApplicationClass();
        WorkbookClass xlsWb = null;
        Worksheet xlsWs = null;
        Range ExcelCellText;

        try
        {
            xlsWb = (WorkbookClass)xlsApp.Workbooks.Open(@"E:\WorkingFolder\Code\EnVazhi2.xls", 0, false, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlsWs = (Worksheet)xlsWb.Worksheets.get_Item(1);

            ExcelCellText = xlsWs.get_Range("A1", Missing.Value);
            ExcelCellText = ExcelCellText.get_Resize(dt.Rows.Count, dt.Columns.Count);
            string[,] myArray = new string[dt.Rows.Count, dt.Columns.Count];

            int iRow=0;

            foreach(DataRow dr in dt.Rows)
            {
                for (int iCol = 0; iCol < dt.Columns.Count; iCol++)
                {
                    myArray[iRow, iCol] = dr[iCol].ToString();
                }
                iRow++;
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
            ExcelCellText.set_Value(Missing.Value, myArray);
        }
        catch (Exception ex)
        {
            Console.Write(ex.Message);
        }

Выдает исключение

Исключение из HRESULT: 0x800A03EC

в строке

            ExcelCellText.set_Value(Missing.Value, myArray);

ExcelФайл частично заполнен.Исключение происходит, когда он пытается скопировать это значение из myArray в Excel.

Enawvg Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr 10-02-2009 09:39 NZ Gb PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ Zngvjpg srvjgershaq

Uv,

cyrnfr svaq gur pbeerpg cbyvpl ahzore

268538840

Enawvg Xnhe

----- Sbejneqrq En EnawvgXnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr ba 10/10/2009 09:38 NZ ----- PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr 02/09/2009 05:37 CZ Gb Enawvg Xnbvvbbwbbwbbwbbwbwbbjbbwbb@ZnkArjLbexYvsr pp

Fhowrpg Er: cyf vagvngr ershaq

Uv

Gunax lbh sbe jevgvat gb Phfgbzre Freivprf ng Znk Arj Lbex Yvs.

Jr npxabjyrqtr gur erprvcg bs lbhe inyhnoyr srrqonpx naq bhe Phfgbzre Freivpr Rkrphgvir jvyy trg va gbhpu jvgu lbh va gur arkg 48 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 rhgr}

268538295 2141982 268598840 vapbeerpg а. Б.180 5577 (gbyy serr vs pnyyvat sebz ZGAY be OFAY argjbex) be 0124-2542001

Gunaxf naq Ertneqf Xnenz Fvatu Phfgbzre Freivprf Znk Arj Lbex Yvsr Vafhenapr Pb.Ygq.Bcrengvba Pragre, Cybg Ab.- 90 N Frpgbe - 18, Hqlbt Ivune Thetnba - 122002 Gry - 0124 - 2542001 Gbyy Serr - 1800-180-5577 Snk ahzore - 0124 - 4239683

Enawvg Xnhe / Bcrengvbaf / Ubzr Bssvr / 09xnSkr-2009 03:07 CZ Gb PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr pp

Fhowrpg cyf vagvngr ershaq

* * * * * * *

ershaq purdhr abg erprvirq

268538295 268598840

Enawvg Xnhe

Почему выдается ошибка?Есть ли известная проблема с set_Value?

Я попробовал следующие два варианта, описанные здесь на Ссылка 1

Любые предложения или советы очень ценятся!Спасибо!

РЕДАКТИРОВАТЬ

Этот код прекрасно работает, когда я использую Microsoft Office Excel 2007 SP 2.

Версия / SP Microsoft Office Excel2003, где это терпит неудачу, является этим Стандартным Выпуском (без установленного SP).

1 Ответ

1 голос
/ 01 марта 2011

Кажется, вы столкнулись с ограничением самого Excel.Так что [неудачный] ответ на ваш вопрос - да - есть известная проблема с set_value.Лучший обходной путь - это проверить, есть ли у пользователя минимальная версия Excel, и реагировать соответствующим образом (не запускать, усекать до 1000 символов, разбивать текст на несколько полей, пропускать эти ячейки и т. Д.).

Возможно, не то, что вы хотели выяснить.Я написал это как ответ, вместо того, чтобы продолжать комментарии, но не стесняйтесь писать и принимать свой собственный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...