我编程生成的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数值
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数值
Worksheets("Sheet1").Range("A1").NumberFormatLocal
更多样式设置可以参考下面的博文:
http://blog.sina.com.cn/s/blog_41616cb501012y9b.html
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;
最简单两种方法:
1.设置该列格式为数字,如果该列都带.或者0,直接全部将.替换为.,或将0替换为0;
如果数据格式不一样,没有可一次全部替换的。
2.打开记事本,把那列粘到一个文本文件里,再直接粘回去。
OK。遇到有些从网上扒下来的,或是像SQL自动生成的数据库脚本那样特别的数据结构,记事本+Word+替换,能很方便快捷地解决很多的问题。编程都不一定能解决
生成数据为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();
}
}
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; }