我有一个带有测试数据的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
那么,有谁能告诉我原因以及如何解决这个问题?
答案 0 :(得分:1)
在将字符串输出到控制台之前,需要先设置控制台编码。
Console.OutputEncoding = System.Text.Encoding.UTF8;
一个好的地方就在代码中的代码片段之后:
Person p = new Person();
答案 1 :(得分:1)
Encoding enc = Encoding.GetEncoding("iso-8859-1");
这是西欧欧盟字母的编码。
答案 2 :(得分:0)
string s = values[i, j].ToString();
似乎excel电子表格中文本的编码不同。尝试使用相关的编码。