从.xlsx文件读取数据时

本文关键字:数据 读取 文件 xlsx | 更新日期: 2023-09-27 17:59:12

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,      `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,` 

从.xlsx文件读取数据时

看起来像是一个编码问题。

我过去常常在将Excel读取到数据表中,然后将数据表序列化为文件后出现这个问题。

每次我从序列化文件中读回数据时,一些符号都会被有趣的A和E所取代。

我发现问题出在我使用的编码上。然后,我开始使用Unicode编码存储excel数据,从此再也没有遇到excel数据的符号问题。

我希望这能帮助。。。