【发布时间】:2012-08-20 15:33:46
【问题描述】:
有人只是帮我解决这个问题! 为什么这段代码不起作用。我在互联网上也找不到太多教程。
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkShee=(Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlApp.SpellingOptions.UserDict = "CUSTOM.DIC";
var udict = xlApp.SpellingOptions.UserDict;
xlWorkSheet.CheckSpelling();
xlWorkSheet.Cells[1, 1] = "Sstring";
string tsql = "select nvalue from [role report]";
OleDbDataAdapter tda = new OleDbDataAdapter(tsql, con);
DataTable tdt = new DataTable();
con.Open();
tda.Fill(tdt);
con.Close();
int count = 0;
for (int x = 0; x<500; x++)
{
if (tdt.Rows[x]["nvalue"].ToString()!= "")
{
xlWorkSheet.Cells[x+2, 1] = tdt.Rows[x]["nvalue"].ToString();
count++;
}
}
for (int k=0; k<count; y++)
{
//bool t = false;
if (xlWorkSheet.Cells[k+2, 1].ToString() != "")
{
if ((xlApp.CheckSpelling(xlWorkSheet.Cells[k+2, 1].ToString())))
xlWorkSheet.Cells[k+2, 2] = "chk";
}
}
try
{
xlWorkBook.SaveAs("spellspell.xls",Excel.XlFileFormat.xlWorkbookNormal,
misValue,Excel.XlSaveAsAccessMode.xlExclusive,misValue,
misValue, misValue,misValue,misValue);
}
catch (Exception ex)
{ }
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created, you can find the file c:\\csharp-Excel.xls")
除了每个拼写错误的单词之外,我的输出应该在单元格中包含字符串“chk”。但是输出并没有显示出来。
【问题讨论】:
-
xlApp.CheckSpelling() 的正确用法在这里应该对我有所帮助。有人用过这个吗???!
-
您可以从在您的 catch 块中添加一个 Debug.WriteLine(ex.Message) 开始。
-
这是一个令人讨厌的意大利面条代码!不敢相信有人在写这样的 C# 软件……难怪你找不到问题。
-
@walther 如果你能成为足智多谋的人,我会很高兴的。我只需要知道使用 .CheckSpelling() 函数的格式即可。
-
你需要将你的函数分离为不同的方法。然后从已经建议的方法开始 - 使用调试器并尝试找到问题的根源。你混合和匹配各种抽象层,我可以看到一些数据库访问、一些 xml 库以及谁知道还有什么。如果您根据已知的 OOP 编码标准正确地格式化您的代码,您肯定会发现发现错误突然变得容易得多。
标签: c# excel spell-checking