2011-06-16 108 views
3
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,` 

回答

0

看起來像一個編碼問題。

我在將Excel讀入數據表後將此數據表序列化到一個文件後出現此問題。

每當我從串行化文件中讀取數據時,一些符號將被有趣的A和E代替。

我發現問題出在我使用的編碼上。然後,我開始使用Unicode編碼存儲excel數據,並再次遇到Excel數據的另一個符號問題。我希望這可以幫助...