应用中经常会遇到要从系统或数据库中导出数据平面文件,一般是导出到txt,csv或excel。txt和csv一般用在系统间的数据交换,而 excel一般有较好的显示效果,可以按照一定的模板导出,导出就不用再排版了,使用简单,如果是使用做报表一般都导出excel文件。

但是使用com组件导出到Excel数据很慢,有另一种生成excel文件的方式就是通过html和css快速导出数据同时并能设置样式,使用这种方式有两个优点:1是速度快,2是不需安装excel支持。 
  当使用这种方法导出文件时,有时会遇到一个问题,就是导出的Excel经常会把我们的数据自动识别为其他格式,例如只有纯数字的字段在导出到 Excel后会被自动识别为数字格式,而一旦数字超过11位,Excel便会将其以科学计数法的形式来显示,比如身份证号码,带区号的电话号码等。

  解决方法有多种,这里只介绍一种本人认为最好的一种,即使用CSS给出现问题的表格字段(如<TD>)应用mso-number- format属性,用这个属性指定某单元格的数据格式,避免Excel自动转换格式。mso-number-format是Office提供的格式, 如果您将office文档转成HTML就会有这样的标志。MSO表示Microsoft Office。

示例:

<style type="text/css"> 
.format{ 
mso-number-format:'\@'; 

</style>

<td class="format">123456789012345</td>

  在css中加入:mso-number-format定义数据格式,格式可以在excel中查看自定义格式,具体可以参考一下:
mso-number-format:"0" NO Decimals  
mso-number-format:"0\.000" 3 Decimals  
mso-number-format:"\#\,\#\#0\.000" Comma with 3 dec  
mso-number-format:"mm\/dd\/yy" Date7  
mso-number-format:"mmmm\ d\,\ yyyy" Date9  
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM" D -T AMPM  
mso-number-format:"Short Date" 01/03/1998  
mso-number-format:"Medium Date" 01-mar-98  
mso-number-format:"d\-mmm\-yyyy" 01-mar-1998  
mso-number-format:"Short Time" 5:16  
mso-number-format:"Medium Time" 5:16 am  
mso-number-format:"Long Time" 5:16:21:00  
mso-number-format:"Percent" Percent - two decimals  
mso-number-format:"0%" Percent - no decimals  
mso-number-format:"0\.E+00" Scientific Notation  
mso-number-format:"\@" Text  
mso-number-format:"\#\ ???\/???" Fractions - up to 3 digits (312/943) 

 public bool ExportToExcel(System.Data.DataTable dataTable, System.Web.HttpContext curContext)
{
System.Web.UI.WebControls.DataGrid dgExport = null;
// 当前对话
//System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null; if (dataTable != null && dataTable.Rows.Count > )
{
//转换列名为中文
for (int i = ; i < dataTable.Columns.Count; i++)
{
dataTable.Columns[i].ColumnName = ColNameConvertToName(dataTable.Columns[i].ColumnName);
} // 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename= export.xls"); // 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = dataTable.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind(); // 返回客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString().Replace("<td", "<td STYLE='MSO-NUMBER-FORMAT:\\@'"));
curContext.Response.End(); return true;
} return false;
}

[转发]导出Excel 格式 mso-number-format的更多相关文章

  1. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

  2. 使用PHPExcel导入导出excel格式文件

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  3. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...

  4. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  5. 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型

    如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...

  6. 插件 ExcelWrite 导出Excel格式数据/获取图层

    使用ExcelWrite 插件可以导出Excel格式的数据: ExcelFile端口接 文件数据路径 最后面的是文件名,不用写格式 如果存储树形数据,需要 勾选 List To Row 选项: 附: ...

  7. 导出Excel格式数据

    /** * 导出规则统计数据 excel格式 * @param bill * @return */ public String exportExamsignupExamnoExcel ( String ...

  8. GridView导出excel格式问题

    在导出的点击事件中,代码如下: //指定导出对应单元格为文本样式 string style = @"<style> .test { vnd.ms-excel.numberform ...

  9. mysql数据导出excel格式+乱码解决

    1:导出的SQL命令,只需要加上“FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' ” ...

随机推荐

  1. linux 可用内存查看

    用free命令查看. 下面是一个例子(单位是MB): [root@linuxzgf ~]# free -m total used free shared buffers cachedMem: 7982 ...

  2. 算法库:基础线性代数子程序库(Basic Linear Algebra Subprograms,BLAS)介绍

    调试DeepFlow光流算法,由于作者给出的算法是基于Linux系统的,所以要在Windows上运行,不得不做大量的修改工作.移植到Windows平台,除了一些头文件找不到外,还有一些函数也找不到.这 ...

  3. [技巧]把Excel里的数据插入到数据库里的方法

    .如果先在6行数据的最后一列在插入一列数据,请先把列名写好,然后再第一行的该列下输入数字, 然后选中该单元格向下拖拽一个单元格然后就能看到黑色的小框, 双击右下角黑色的小点,6行数据就 会填上默认的第 ...

  4. 查看用户的SQL执行历史

    程序开发少不来SQL,基本都是基于SQL开发,程序仅仅起一个流程控制的作用.但是数据库本身存在许多内置的视图或者内置的表,如果打算研究SQL执行的效率已经SQL执行的历史记录,通过这些视图可以知道. ...

  5. vim 显示当前文件名 缩进设置 常用设置

  6. JS浮点数运算BUG破法

    JS里,0.3*3 = 0.8999999999999999 破法1:((0.3*10)*3)/10 破法2:(0.3*3).toFixed(2)//保留两位小数 原因:js浮点数用的是IEEE754 ...

  7. 转载KMP

    出处: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 在假期之前,断 ...

  8. hough变换

    //c.h typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned int DWORD;typedef long ...

  9. 图像JPEG格式介绍

    1 JPG格式介绍 JPEG (Joint PhotographicExperts GROUP)是由国际标准组织和国际电话电报咨询委员会为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用 ...

  10. Decks

    Now that we have Card objects, the next step is to define a class to represent decks. Since a deck i ...