使用set#U值将数据从C#转储到Excel会引发错误
我正在尝试将数据转储到Excel文件中。下面是我们使用的代码 注意:dt是从另一个函数传递的数据表使用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
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);