从 .xlsx 文件读取数据

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 文件中获取数据。
但是如果文件名中有任何特殊字符,它将显示为不同的字符,如下所示。
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,` 
1个回答

0

看起来是编码问题。

我曾经在将Excel读入数据表并将数据表序列化到文件后遇到过这个问题。

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

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

希望这可以帮助到你...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接