从.xlsx文件读取数据时

string Code = ""; if (fileUp.HasFile) { string Path = fileUp.PostedFile.FileName; // initialize the Excel Application class ApplicationClass app = new ApplicationClass(); // create the workbook object by opening the excel file. Workbook workBook = app.Workbooks.Open(Path, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); // Get The Active Worksheet Using Sheet Name Or Active Sheet Worksheet workSheet = (Worksheet)workBook.ActiveSheet; int index = 0; // This row,column index should be changed as per your need. // that is which cell in the excel you are interesting to read. object rowIndex = 2; object colIndex1 = 1; object colIndex2 = 2; object colIndex3 = 3; object colIndex4 = 4; object colIndex5 = 5; object colIndex6 = 6; object colIndex7 = 7; try { while (((Range)workSheet.Cells[rowIndex, colIndex1]).Value2 != null) { rowIndex = 2 + index; //string QuestionCode = (index + 1).ToString(); string QuestionCode = ((Range)workSheet.Cells[rowIndex, colIndex1]).Value2.ToString(); string QuestionText = ((Range)workSheet.Cells[rowIndex, colIndex2]).Value2.ToString(); string CorrectAnswer = ((Range)workSheet.Cells[rowIndex, colIndex3]).Value2.ToString(); string ChoiceA = ((Range)workSheet.Cells[rowIndex, colIndex4]).Value2.ToString(); string ChoiceB = ((Range)workSheet.Cells[rowIndex, colIndex5]).Value2.ToString(); string ChoiceC = ((Range)workSheet.Cells[rowIndex, colIndex6]).Value2.ToString(); string ChoiceD = ((Range)workSheet.Cells[rowIndex, colIndex7]).Value2.ToString(); // string ChoiceE = ((Excel.Range)workSheet.Cells[rowIndex, colIndex7]).Value2.ToString(); newQuestionElement = new XElement("Question"); XElement optionElement = new XElement(QuestionElement.Option); questionType = ddlQusType.SelectedValue.ToByte(); if (!string.IsNullOrEmpty(QuestionText)) newQuestionElement.Add(new XElement(QuestionElement.QuestionText, QuestionText)); else { //lblMessage.Text = "Missing question in Qus No.: " + i; break; } newQuestionElement.Add(new XElement(QuestionElement.QuestionType, questionType)); //newQuestionElement.Add(new XElement(QuestionElement.Randomize, chbRandomizeChoice.Checked)); newQuestionElement.Add(new XElement(QuestionElement.Answer, CorrectAnswer)); if (ChoiceA.Trim() != string.Empty) optionElement.Add(new XElement("A", ChoiceA)); if (ChoiceB.Trim() != string.Empty) optionElement.Add(new XElement("B", ChoiceB)); if (ChoiceC.Trim() != string.Empty) optionElement.Add(new XElement("C", ChoiceC)); if (ChoiceD.Trim() != string.Empty) optionElement.Add(new XElement("D", ChoiceD)); newQuestionElement.Add(optionElement); index++; saveData(QuestionCode.ToString()); 

我正在使用此代码从.xlsx文件检索数据。

但是,如果文件中有任何特殊字符,则显示为不同,如此

 The set S = {1,2,33……….12} is to be partitioned into three sets A,B,C of equal size. Thus, `AUBUC = S,` The set S = {1,2,33……….12} is to be partitioned into three sets A,B,C of equal size. Thus, `A È B È C = S,` 

看起来像一个编码问题。

在将Excel读入数据表之后,将数据表序列化到一个文件中,我使用这个问题。

每当我从串行化文件中读取数据时,一些符号将被有趣的A和E所代替。

我发现问题是用我正在使用的编码。 然后我开始使用Unicode编码存储excel数据,并再次遇到Excel数据的另一个符号问题。

我希望这有帮助…