从.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文件检索数据。从.xlsx文件读取数据时

但如果文件中有任何特殊字符,它显示它为不同的,像这样

The set S = {1,2,33……….12} is to be partitioned into three sets 
A,B,C of equal size. Thus,  `A U B U C = 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数据的另一个符号问题。我希望这可以帮助...