使用set_Value将数据从C#转储到Excel会引发错误

时间:2011-02-25 12:02:20

标签: excel c#-2.0 excel-interop

我正在尝试将数据转储到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 @ ZnkArjLbexYvsr   第

     

Fhowrpg Sj:cyf vagvngr ershaq

     

UV,

     

cyrnfr svaq gur pbeerpg cbyvpl ahzore

     

268538840

     

Enawvg Xnhe

     

----- Sbejneqrq ol Enawvg Xnhe / Bcrengvbaf / Ubzr   Bssvpr / ZnkArjLbexYvsr ba 02/10/2009   09:38 NZ ----- PPEC / Bcrengvbaf / Ubzr   Bssvpr / ZnkArjLbexYvsr 02/09/2009 05:37   CZ Gb Enawvg   Xnhe / Bcrengvbaf / Ubzr   Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr   第

     

Fhowrpg Er:cyf vagvngr ershaq

     

紫外

     

Gunax lbh sbe jevgvat gb Phfgbzre   Freivprf ng Znk Arj Lbex Yvsr   Vafhenapr。

     

Jr npxabjyrqtr gur erprvcg bs lbhe   inyhnoyr srrqonpx naq bhe Phfgbzre   Freivpr Rkrphgvir jvyy trg va gbhpu   jvgu lbh va gur arkg 48 ubhef。

     

Cyrnfr abgr gung gur ersrerapr ahzore   sbe lbhe srrqonpx ner

     

268538295 2141982 268598840 vapbeerpg   AB。

     

Jr erdhrfg lbh gb dhbgr gur nobir   ahzore va nyy shgher pbzzhavpngvba   jvgu ZALY ercerfragngvirf。

     

Lbh znl nyfb trg va gbhpu jvgu bhe   Phfgbzre Uryc Yvar ahzore 1800 180   5577(gbyy serr vs pnyyvat sebz ZGAY   是OFAY argjbex)是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   Bssvpr / ZnkArjLbexYvsr 09-02-2009   03:07 CZ Gb PPEC / Bcrengvbaf / Ubzr   Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr   第

     

Fhowrpg cyf vagvngr ershaq

     

UV,

     

cyf ybt n serfu pnfr

     ershaq purdhr abg erprvirq

     

268538295 268598840

     

Enawvg Xnhe

为什么会抛出错误? set_Value是否存在已知问题?

我在Link 1

尝试了以下两个选项

非常感谢任何建议或建议!谢谢!

修改

当我使用Microsoft Office Excel 2007 SP 2时,此代码可以正常工作。

失败的Microsoft Office Excel 2003版本/ SP是标准版(安装了NO SP)。

1 个答案:

答案 0 :(得分:1)

看来你已经遇到了Excel本身的限制。所以你的问题的[不幸]答案是肯定的 - set_value存在一个已知问题。最好的解决方法是检查用户是否具有最低版本的Excel并做出相应的反应(不要运行,截断为1000个字符,将文本拆分为多个字段,跳过这些单元格等)。

可能不是你想知道的。我把它写成答案而不是继续评论,但随时写下并接受你自己的答案。