我编程生成的xls文件里面的数字变成文本,怎么才能变成数字啊?这样在一打开Excel时,就可以对里面的数字求和等。我用了复制 粘贴数值,后拖动数字列还是只能计数。同时,也想问问如何生成才能Excel,才能让excel识别出数值。修改单元格格式也不行。我现在是:string myFileName = saveFileName = saveFileDialog1.FileName.Substring(0, saveFileDialog1.FileName.Length - 4) + DateTime.Now.ToLocalTime().ToString().Replace(":", "_")+".xls"; //文件名
strLine = strLine + ds.Tables[0].Columns.ColumnName.ToString() + Convert.ToChar(9) + Convert.ToChar(28);//9是tab,28是文本结束符,都是assic码。
  objStreamWriter.WriteLine(strLine);不知各位还有和妙招?因为用myxls 和NIPO都有65536行数的限制,所以才想起此笨方法。Excel编程String数值

解决方案 »

  1.   

    你可以把单元格的格式改成数字显示了,默认的是文本显示,你要把显示数字的单元格都设置为数字格式,这时候你可以使用Range对象,因为Excel单元格也是一个Range,具体实现代码为:
     Worksheets("Sheet1").Range("A1").NumberFormatLocal
    更多样式设置可以参考下面的博文:
    http://blog.sina.com.cn/s/blog_41616cb501012y9b.html
      

  2.   

    这两种方法都不可以,可能是跟我的文件有关系。
                            xlsSheet.get_Range(xlsSheet.Cells[j + 1, i + 1], xlsSheet.Cells[j + 1, i + 1]).NumberFormatLocal = "G/通用格式";//"G/通用格式" @ General
                            xlsSheet.get_Range(xlsSheet.Cells[j + 1, i + 1], xlsSheet.Cells[j + 1, i + 1]).NumberFormat = "0";
                            xlsSheet.get_Range(xlsSheet.Cells[j + 1, i + 1], xlsSheet.Cells[j + 1, i + 1]).Interior.ColorIndex = 50;
      

  3.   

    同求解:)如果只是EXCEL里,这个问题就很简单,与函数什么的都没关系。
    最简单两种方法:
    1.设置该列格式为数字,如果该列都带.或者0,直接全部将.替换为.,或将0替换为0;
    如果数据格式不一样,没有可一次全部替换的。
    2.打开记事本,把那列粘到一个文本文件里,再直接粘回去。
    OK。遇到有些从网上扒下来的,或是像SQL自动生成的数据库脚本那样特别的数据结构,记事本+Word+替换,能很方便快捷地解决很多的问题。编程都不一定能解决
      

  4.   

    用了另一个方法:
    生成数据为dbf文件(数字类型的就直接定义表为数值),dataset or datatable or insert into 写 
    dbf文件。这样出来的数据就是可以求和的了。        public string ExportDataIntoDBF(DataSet ds, string path, string fileName )
            {
                ArrayList list = new ArrayList();//用集合保存需导出的字段
                if (File.Exists(path + fileName))
                {
                    File.Delete(path + fileName);
                }            string createSql = "create table " + fileName + " (";            foreach (DataColumn dc in ds.Tables[0].Columns)
                {
                    string fieldName = dc.ColumnName;
                    string type = dc.DataType.ToString();
                    switch (type)
                    {
                        case "System.String": type = "varchar(50)"; break;
                        case "System.Boolean":type = "varchar(10)"; break;
                        case "System.Int32":  type = "int";  break;
                        case "System.Decimal": type = "int"; break;
                    }
                    createSql = createSql + fieldName + " " + type + ",";
                    list.Add(fieldName);
                }            createSql = createSql.Substring(0, createSql.Length - 1) + ")";
                OleDbConnection con = new OleDbConnection(GetConnection(path));
                OleDbCommand cmd = new OleDbCommand();            try
                {
                    cmd.Connection = con;
                    con.Open();
                    cmd.CommandText = createSql;
                    cmd.ExecuteNonQuery();//创建新表
                    foreach (DataRow row in ds.Tables[0].Rows)//将数据导出到DBF文件中
                    {
                        string insertSql = "insert into " + fileName + " values(";
                        for (int i = 0; i < list.Count; i++)
                        {
                            insertSql = insertSql + "'" + row[list[i].ToString()].ToString() + "',";
                        }
                        insertSql = insertSql.Substring(0, insertSql.Length - 1) + ")";
                        cmd.CommandText = insertSql;
                        cmd.ExecuteNonQuery();
                    }
                    return "导出成功!";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
                finally
                {
                    con.Close();
                }
            }
      

  5.   


            private string GetConnection(string path)
            {
                return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=dBASE IV;";
            }        public string GetRandomFileName()
            {
                Random rnd = new Random((int)(DateTime.Now.Ticks));
                string s = rnd.Next(999).ToString();
                //s = FilePrefix + s;
                return s;        }