2017-10-18 49 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"); 

这是西欧字母的编码。