0

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

Fhowrpg Sj: cyf vagvngr ershaq

紫外线,

cyrnfr svaq gur pbeerpg cbyvpl ahzore

268538840

启用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 pp

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. 是的。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 pp

Fhowrpg cyf vagvngr ershaq

紫外线,

cyf ybt n serfu pnfr

ershaq purdhr abg erprvirq

268538295 268598840

启用Xnhe

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

我尝试了链接 1中描述的以下两个选项

任何建议或意见将不胜感激!谢谢!

编辑

当我使用 Microsoft Office Excel 2007 SP 2 时,此代码运行良好。

失败的 Microsoft Office Excel 2003 版本/SP 是标准版本(未安装任何 SP)。

4

1 回答 1

1

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

可能不是你想知道的。我将其写为答案,而不是继续评论线索,但请随意编写并接受您自己的答案。

于 2011-03-01T13:10:07.103 回答