`

[转发]导出Excel 格式 mso-number-format

 
阅读更多
应用中经常会遇到要从系统或数据库中导出数据平面文件,一般是导出到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>0)
            {
                //转换列名为中文
                for (int i = 0; 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;
        }
分享到:
评论

相关推荐

    使用HTML,CSS快速导出数据到Excel

    这段代码用于定义数据格式,在这里我们使用 mso-number-format 属性来定义数据格式,可以根据需要选择不同的格式,例如: * mso-number-format:"0" NO Decimals * mso-number-format:"0\.000" 3 Decimals * mso-...

    导出标准格式的EXCEL

    .net导出标准格式的EXCEL的方法,使用VS2005测试通过。

    ASP.NET导出Excel乱码的终极解决方案

    然而,在处理文件导出,尤其是将数据导出为Excel格式时,开发者经常会遇到一个令人头疼的问题——乱码。这个问题的根源在于字符编码的不匹配,而解决这一问题对于确保数据正确性和用户体验至关重要。 ### ASP.NET...

    防止GridView导出到excel中自动转成科学计数法

    // 遍历每列,并添加自定义的Excel格式 foreach (TableCell cell in e.Row.Cells) { cell.Attributes.Add("style", "mso-number-format:@"); // @ 表示文本格式 } } } ``` #### 方法解释 - `mso-number-...

    jsp导出身份证到excel时候格式不对但以X结尾的却可以

    今天早上客户跟我说excel导出身份证的时候显示有的对有的不对,我一看原来身份证以X结尾的可以,其它都显示不正确。身份正显示如图所示: 在网上搜了一下发现,原来excel看你数字列超过12位就会显示科学计数。而...

    GridView导出Excel研究

    如果是数据行,可以访问到当前行的`Cells`集合,然后设置`Text`属性的`mso-number-format`样式,确保ID列被正确地以文本格式显示。 5. **安全与兼容性**: - `VerifyRenderingInServerForm`方法的重写是为了避免在...

    将GridView显示的内容导出为Excel

    string style = @"&lt;style&gt; .text { mso-number-format:\@; } &lt;/style&gt; "; // 清空响应内容,设置编码、文件名和类型 Response.ClearContent(); Response.ContentEncoding = System.Text.Encoding.UTF7; ...

    GridView导出到Excel

    string style = "&lt;style&gt;.text{mso-number-format:\"\\@\";}&lt;/style&gt;"; Response.Write(style); Response.Write(sw.ToString()); Response.End(); } } public override void VerifyRenderingInServerForm...

    GridView中的数据导出为Excel

    它清空了HTTP响应的内容,设置响应头为“content-disposition”,指定文件名为"MyExcelFile.xls",并设置Content-Type为"application/excel",以表明数据是Excel格式。接着,创建一个StringWriter和HtmlTextWriter,...

    asp.net导出Excel

    string excelContent = oStringWriter.ToString().Replace(", "&lt;td STYLE='mso-number-format:\\@'&gt;"); // 清空缓存,写入Excel内容并结束响应 System.Web.HttpContext.Current.Response.Write(excelContent); ...

    导出Excel的代码

    string style = @"&lt;style&gt;.text{mso-number-format:\@;}&lt;/script&gt;"; ``` 通过内联样式调整,确保数字格式正确显示,这里使用了Excel特有的`.text`样式,以保持数字原始格式。 ### 结论 C#导出Excel至服务器端渲染...

    js实现数据导出为EXCEL(支持大量数据导出)

    `mso-number-format` CSS样式可以用来设置Excel单元格的数字格式,使其按照特定的样式显示。 8. **Base64编码** - 在JavaScript中,可以使用Base64编码将二进制数据转换为文本字符串,以便在URL中传递或嵌入到HTML...

    DataTable导出为Excel

    sExcel.AppendFormat("&lt;TR&gt;&lt;TD style=\"mso-number-format:'\\@';\"&gt;{0}&lt;/TD&gt;&lt;TD&gt;{1}&lt;/TD&gt;&lt;TD&gt;{2}&lt;/TD&gt;&lt;/TR&gt;", dr["TelNo"].ToString(), dr["SMSContent"].ToString(), dr["CreateDate"].ToString()); } sExcel....

    asp.net导出数据到Excel的几种方法 学习心得

    System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace(", "&lt;td STYLE='mso-number-format:\\@'")); System.Web.HttpContext.Current.Response.Buffer = false; System.Web....

    将ASP.NET的列表导出EXECL

    这个过程可以通过处理GridView控件的数据并将其转换为Excel格式来实现。以下是一些关键的知识点: 1. **GridView填充数据**:首先,我们需要填充GridView以展示数据。通常,这可以通过连接到数据库并使用...

    导出报表小技巧

    在HTML表格中,可以使用`&lt;td&gt;`标签的`style`属性,设置`mso-number-format`为"\@",告诉Excel该单元格内容应作为文本处理,代码示例如下: ```html &lt;td style="mso-number-format:\@\;"&gt;001 ``` 这样,即使数据是...

    GridView导出Excel实现原理与代码

    为了保持数据格式,尤其是数字格式,还动态添加了样式规则,比如使用mso-number-format来保留数字的前导零。 5. **样式设置**:通过编程方式,在GridView的某列添加CSS类以应用定义好的样式规则。比如通过在...

    数据库中Excel导出技术

    这里需要注意的是`Content-Disposition`头字段的作用是告诉浏览器该以何种方式处理接收到的数据(显示或下载),而`Content-Type`字段则指定了数据的MIME类型,对于Excel文件来说,“application/ms-excel”是最常用...

Global site tag (gtag.js) - Google Analytics