handk 发表于 2016-6-15 15:51:27

关于C1flexgrid读取excel文件出现乱码的解决办法

今天有网友在QQ群中提问,用c1flexgrid控件,读取excel文件,出现乱码,如下图所示。


所使用的代码是:
this.flxGrid.LoadExcel(@"c:\test_data.xlsx", FileFlags.AsDisplayed | FileFlags.IncludeFixedCells | FileFlags.IncludeMergedRanges);


这个问题造成的原因是,原始的Excel文件中,乱码位置的文本,是富文本。
原则上可以在excel中,通过删除文本样式来解决,但这样对用户而言,使用成本过高,还是应该通过程序来解决。

之前的一个小程序中,处理过类似的问题,现贴出来供分享。

_open_excel.Filter = "Excel 文件|*.xls;*.xlsx";
                _open_excel.FileName = "";
                if (_open_excel.ShowDialog() != DialogResult.OK)
                  return;
                ClearAll();
                _excel.Load(_open_excel.FileName);


                if (_excel.Sheets.Count < 1) return;
                XLSheet sheet = _excel.Sheets;

                _fg1.Rows.Count = sheet.Rows.Count;
                _fg1.Cols.Count = sheet.Columns.Count + 1;
                for (int i = 0; i < sheet.Columns.Count; i++)
                {
                  string cn = sheet.Value == null ? "" : sheet.Value.ToString();
                  _fg1.Cols.Name = cn;
                  _fg1.Cols.Caption = cn;
                  _excel_col_name.Add(cn);
                }

                for (int i = 1; i < sheet.Rows.Count; i++)
                {
                  _fg1 = i;
                  for (int j = 0; j < sheet.Columns.Count; j++)
                  {
                        object obj = sheet.Value;
                        string value = "";
                        if (obj != null)
                        {
                            if (typeof(string) == obj.GetType())//如果单元格的类型是字符串,则有可能里面的内容是富文本形式,需要取Text的值。
                            {
                              value = sheet.Text;
                            }
                            else
                            {
                              value = obj.ToString();
                            }
                        }
                        _fg1 = value;
                  }
                }

代码中的变量类型说明:
_excel是c1excel
_fg1是c1flexgrid
_open_excel是OpenFileDialog

gw0506 发表于 2016-6-15 15:58:57

感谢分享!
实战经验~ 获益匪浅!!!
页: [1]
查看完整版本: 关于C1flexgrid读取excel文件出现乱码的解决办法