C#从excel

时间:2017-10-18 08:29:19

标签: c# excel winforms

我有一个带有测试数据的excel文件,如下所示: HàThịminhThắng HàPhúcToàn

我正在从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);

                            }
                    }

                }
            }
        }

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

那么,有谁能告诉我原因以及如何解决这个问题?

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

这是西欧欧盟字母的编码。

答案 2 :(得分:0)

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

似乎excel电子表格中文本的编码不同。尝试使用相关的编码。