关于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
感谢分享!
实战经验~ 获益匪浅!!!
页:
[1]