找回密码
 立即注册

QQ登录

只需一步,快速开始

evil

银牌会员

3

主题

13

帖子

2091

积分

银牌会员

积分
2091

活字格认证

最新发帖
evil
银牌会员   /  发表于:2014-3-12 10:53  /   查看:6010  /  回复:3
QQ截图20140312101749.png
导入fpspread控件的Excel表格,再导出来用Excel文件保存时候,文件里的数据类型出错,数字型的数据都变成了文本类型,无法进行计算。请问,fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType();应该写在导入部分还是导出部分,还是应该用别的办法控制数据类型?请大神帮忙解答

3 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-3-12 11:40:00
沙发
回复 1楼evil的帖子

能给提供一个完整的demo吗?  导入Excel样本。

这样速度会很快帮您定位问题,找答案的。
回复 使用道具 举报
evil
银牌会员   /  发表于:2014-3-12 12:26:00
板凳
回复 2楼roger.wang的帖子

private void TSMenuItem_Open_Click(object sender, EventArgs e)
        {
            open_dlg.Filter = "Excel文件 (*.xlsx)|*.xlsx";
            open_dlg.FilterIndex = 0;
            open_dlg.RestoreDirectory = true;
            open_dlg.Title = "请选择要导入的Excel文件";
            bool a = false;
            if (open_dlg.ShowDialog() == DialogResult.OK)
            {
                fpSpread1.Sheets.Clear();
                fpSpread1.Visible = true;
                string fileName = open_dlg.FileName;
                System.Data.DataTable _Table = GetExcelTableName(fileName);
                for (int j = 0; j < _Table.Rows.Count; j++)
                {
                    if (_Table.Rows[j][2].ToString() == "Sheet1$")
                    {
                        a = true;
                    }
                }
                if (a == false)
                {
                    MessageBox.Show("请检查导入文件格式和sheet名称!!");
                }
                for (int i = 0; i < _Table.Rows.Count; i++)
                {
                    string sheetname = _Table.Rows[2].ToString();
                    if (sheetname == "Sheet1$")//过滤掉包含“_xlnm&amp;”的sheet
                    {
                        FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();
                        fpSpread1.Sheets.Add(newsheet);
                        try
                        {
                            DataSet ds = DataToDataSet(fileName, _Table.Rows[2].ToString());
                            dttt = DatatoDataTable(fileName);
                            frmWaitingBox f = new frmWaitingBox((obj, args) =>
                            {
                                Thread.Sleep(100);
                                newsheet.SheetName = sheetname;
                            }, 5, "lase Wait...", false, false);
                            f.ShowDialog(this);
                            newsheet.DataSource = ds.Tables[0];
                            fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType();
                            MessageBox.Show("数据已成功导入!");
                        }
                        catch (Exception ex)
                        {
                            System.Console.Write(ex);
                        }
                    }
                }
            }
        }
        /// <summary>保存处理好的的结果集
        /// 保存处理好的的结果集
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TSMenuItem_Save_Click(object sender, EventArgs e)
        {
            if (fpSpread1.Sheets[0].Cells[0, 0].Text != "")
            {
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                saveFileDialog1.Filter = "excel files(*.xls)|*.xls";
                saveFileDialog1.FilterIndex = 2;
                saveFileDialog1.RestoreDirectory = true;
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                       // fpSpread1.ActiveSheet.Protect = false;
                        //fpSpread1.ActiveSheet.DataAutoCellTypes = false;
                        fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType();
                        fpSpread1.SaveExcel(saveFileDialog1.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.None);
                        MessageBox.Show("已保存!");
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex);
                    }
                }
            }
            else
            {
                MessageBox.Show("无任何数据可以保存!");
            }
        }
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-12 14:32:00
地板
回复 3楼evil的帖子

您提供的程序,缺几个函数没有跑不起来,我修改了一下:


  1. if (open_dlg.ShowDialog() == DialogResult.OK)
  2.             {
  3.                 fpSpread1.Sheets.Clear();
  4.                 fpSpread1.Visible = true;
  5.                 string fileName = open_dlg.FileName;
  6.                 fpSpread1.OpenExcel(fileName);

  7.                 fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType();
  8.                 MessageBox.Show(&quot;数据已成功导入!&quot;);
  9.             }
复制代码


附件是我打开1.xlsx, 导出为2.xls,未出现您说的问题。
我使用的Spread 7.2版本:Version=7.35.20132.1
Desktop.rar (3.46 KB, 下载次数: 320)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部