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

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 Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr pp

Fhowrpg Er:cyf vagvngr ershaq

紫外線

Gunax lbh sbe jevgvat gb Phfgbzre Freivprf ng Znk Arj LbexYvsrVafhenapr。

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

Cyrnfr abgr gung gur ersrerapr ahzore sbe lbhe srrqonpx ner

268538295 2141982 268598840vapbeerpgab。

Jr erdhrfg lbh gb dhbgr gur nobir ahzore va nyy shgher pbzzhavpngvba jvguZALYercerfragngvirf。

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

Gunaxf naq Ertneqf Xnenz Fvatu Phfgbzre Freivprf Znk Arj Lbex YvsrVafhenaprPb。Ygq。Bcrengvba Pragre、CybgAb。--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

Enawvg Xnhe

なぜエラーをスローするのですか?set_Valueに既知の問題はありますか?

リンク1でここに説明されている次の2つのオプションを試しました

どんな提案やアドバイスも大歓迎です!ありがとう!

編集

このコードは、Microsoft Office Excel 2007SP2を使用すると完全に正常に機能します。

失敗するMicrosoftOfficeExcel 2003のバージョン/SPは、これが標準リリースです(SPがインストールされていません)。

4

1 に答える 1

1

Excel自体の制限に達したようです。したがって、あなたの質問に対する[不幸な]答えは「はい」です。set_valueには既知の問題があります。最善の回避策は、ユーザーが最小バージョンのExcelを使用しているかどうかを確認し、それに応じて対応することです(実行しない、1000文字に切り捨てる、テキストを複数のフィールドに分割する、それらのセルをスキップするなど)。

おそらくあなたが知りたかったことではないでしょう。コメントトレイルを続けるのではなく、回答としてこれを書きましたが、自由に自分の回答を書いて受け入れてください。

于 2011-03-01T13:10:07.103 に答える