2017-10-18 100 views
1

讀取數據時,我有一個excel,像這樣的測試數據文件: Hà氏明升 Hà福全勝C#錯誤文本格式從Excel

,我從Excel中讀取數據文件是這樣的:

OpenFileDialog openFileDialog = new OpenFileDialog(); 
     if (openFileDialog.ShowDialog() == DialogResult.OK) 
     { 
      Excel.Application excelApp = new Excel.Application(); 
      Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(openFileDialog.FileName); 
      foreach (Excel.Worksheet sheet in excelWorkbook.Worksheets) 
      { 
       Excel.Range range = sheet.UsedRange; 
       object[,] values = (object[,])range.Value2; 

       for (int i = 1; i <= values.GetLength(0); i++) 
       { 
        Person p = new Person(); 
        for (int j = 1; j <= values.GetLength(1); j++) 
        { 
          if (null != values[i, j]) { 
           string s = values[i, j].ToString(); 
          Console.WriteLine("xxxx values[" + i + "][" + j + "] = " + s); 

          } 
        } 

       } 
      } 
     } 

但是,不幸的是這是我得到: Hà釷? minh Th?ng HàPhúcToàn

那麼,誰能告訴我爲什麼以及如何解決這個問題?

回答

-1
string s = values[i, j].ToString(); 

好像excel電子表格中文本的編碼不同。嘗試使用相關的編碼。

1

在將字符串輸出到控制檯之前,您需要先設置控制檯編碼。

Console.OutputEncoding = System.Text.Encoding.UTF8; 

一個好地方將只是在你的代碼下面的代碼段後:

Person p = new Person(); 

沒有Console.OutputEncoding = System.Text.Encoding.UTF8 enter image description here

隨着Console.OutputEncoding = System.Text.Encoding.UTF8 enter image description here

1
Encoding enc = Encoding.GetEncoding("iso-8859-1"); 

這是西歐字母的編碼。