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

使用set#U值将数据从C#转储到Excel会引发错误,excel,c#-2.0,excel-interop,Excel,C# 2.0,Excel Interop,我正在尝试将数据转储到Excel文件中。下面是我们使用的代码 注意:dt是从另一个函数传递的数据表 ApplicationClass xlsApp = new ApplicationClass(); WorkbookClass xlsWb = null; Worksheet xlsWs = null; Range ExcelCellText; try { xlsWb = (W

我正在尝试将数据转储到Excel文件中。下面是我们使用的代码

注意:dt是从另一个函数传递的数据表

        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);
        }
Excel文件已部分填充。当尝试将此值从myArray复制到Excel中时,会发生异常

Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr 10-02-2009 09:39新西兰Gb PPEC/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr@ZnkArjLbexYvsr 聚丙烯

Fhowrpg Sj:cyf vagvngr ershaq

紫外线

cyrnfr svaq gur pbeerpg cbyvpl ahzore

268538840

Enawvg Xnhe

-----Sbejneqrq ol Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr ba 02/10/2009 09:38新西兰----PPEC/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr 02/09/2009 05:37 CZ Gb Enawvg Xnhe/Bcrengvbaf/Ubzr Bssvpr/ZnkArjLbexYvsr@ZnkArjLbexYvsr 聚丙烯

作者:cyf vagvngr ershaq

紫外线

Gunax lbh sbe jevgvat gb Phfgbzre Freivprf ng Znk Arj Lbex Yvsr 瓦夫汉纳普

Jr NPXABJRQTR Gr erprvcg bs lbhe inyhnoyr srrqonpx naq bhe Phfgbzre FRIVPR Rkrphgvir jvyy训练va gbhpu jvgu lbh va gur arkg 48 ubhef

辛弗尔·阿布格·古尔·埃斯雷拉普·阿佐尔(Cyrnfr abgr gur Ersreapr ahzore) sbe lbhe srrqonpx ner

2685382952141982 268598840 vapbeerpg ab

Jr erdhrfg lbh gb dhbgr gur nobir 阿佐尔·瓦尼·施格尔 范古扎利·埃尔塞夫拉甘维夫

Lbh znl nyfb训练va gbhpu jvgu bhe Phfgbzre Uryc Yvar ahzore 1800 180 5577(gbyy serr vs pnyyvat sebz ZGAY be OFAY argjbex)be 0124-2542001

我们将继续努力 Phfgbzre FRIVPRF Znk Arj Lbex Yvsr Vafhenapr Pb。Ygq。布克伦格瓦布拉格, Cybg Ab-90北Frpgbe-18,Hqlbt 伊文内-122002 Gry-0124- 254201 Gbyy Serr-1800-180-5577 Snk 阿佐尔-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

紫外线

cyf ybt n serfu pnfr

ershaq purdhr abg erprvirq

268538295 268598840

Enawvg Xnhe

为什么它会抛出错误?设定值是否存在已知问题

我尝试了下面的两个选项

非常感谢您的任何建议!谢谢

编辑

当我使用MicrosoftOfficeExcel2007SP2时,这段代码运行得非常好


出现故障的Microsoft Office Excel 2003的/SP版本是标准版本(未安装SP)

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


可能不是你想知道的。我写这篇文章是作为一个答案,而不是继续评论,但请随意写并接受您自己的答案。

什么版本(和SP)的Excel?我相信旧版本上有大约1000个字符的限制/错误,但不确定是哪个版本/SP修复的。@ktharsis:谢谢更新。现在是Office 2003,我对SP不太确定,因为我明天要上班去了解一下。但是,我很高兴您相信1000个字符的错误已经得到了修复!呸。擦去额头上的汗水。我欠你一个人情。不知道如何找到SP。但是,“关于”框中列出的版本号是-11.5612。5606@ktharsis:我甚至在SP3上测试了代码,但仍然失败。我认为它只适用于Office 2007,而不是之前:-(认为它是Excel的“功能”(bug)。2003年的一个SP可能会修复它。在expert exchange上也看到了对它的引用,但在那里没有帐户,因此无法找到答案。您可以尝试仅在单个单元格上使用set_值(而不是范围/数组)看看这是否能解决这个问题。我不认为,我可以写得更好!
            ExcelCellText.set_Value(Missing.Value, myArray);