Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML到Excel:数据格式更改_Javascript_Export To Excel - Fatal编程技术网

Javascript HTML到Excel:数据格式更改

Javascript HTML到Excel:数据格式更改,javascript,export-to-excel,Javascript,Export To Excel,我有以下代码将HTML表导出到Excel: function exportToExcel(tableID) { var detailsTable= document.getElementById(tableID); var oExcel = new ActiveXObject("Excel.Application"); var oBook = oExcel.Workbooks.Add; var oSheet = oBook.Worksheets(1); f

我有以下代码将HTML表导出到Excel:

function exportToExcel(tableID)
{
    var detailsTable= document.getElementById(tableID);
    var oExcel = new ActiveXObject("Excel.Application");
    var oBook = oExcel.Workbooks.Add;
    var oSheet = oBook.Worksheets(1);
    for (var y=0;y<detailsTable.rows.length;y++)
    {
        for (var x=0;x<detailsTable.rows(y).cells.length;x++)
        {
            oSheet.Cells(y+1,x+1)= detailsTable.rows(y).cells(x).innerText;
        }
    }

    oExcel.Visible = true;
    oExcel.UserControl = true;
    oExcel.Columns.AutoFit();
    oExcel.Rows.Autofit();
}
尝试在没有lucky的情况下使用NumberFormat:

oExcel.Cells(y+1,x+1).NumberFormat = "DD/MM/YYYY"; 
style="mso-number-format:"dd\/mm\/yyyy"
尝试在没有lucky的情况下使用TD中的样式:

oExcel.Cells(y+1,x+1).NumberFormat = "DD/MM/YYYY"; 
style="mso-number-format:"dd\/mm\/yyyy"
更新:

添加(作为测试):


在的第二个
中,实际格式化日期。正如我所看到的,在这一点上,日期已经错了。我的意思是,在表格中显示的是2014年11月7日(dd/mm/yyyy),在导出中显示的是2014年7月11日(mm/dd/yyyy)

这是我用于将HTML表格转换为CSV和excel的不同方法。这是一种独立于平台的方法,即当ActiveXObject不可用时也可以工作

表代码应具有以下结构。请注意,它只是将类名作为列表分配给Excel文件中所需的行

$u(“#btnXLS”)。单击(函数(){
var xls=jQuery(“.list”).map(函数(a,i){
返回$u.trim($u(this).text()).split(/\s*\n\s*/).join(“\t”);
}).toArray().join(“\r\n”);
下载(xls,“All_Data.xls”,“application/vnd.ms excel”);
});
//download()函数
函数下载(strData、strFileName、strimetype){
var D=文件,
a=D.createElement(“a”);
var Data=“日期:-”+Date();
数据+=“\n\n”+标准数据;
strData=数据;
strFileName=strFileName.substr(0,strFileName.indexOf('.');
strFileName+=Date();
if(strimetype.indexOf(“text/csv”)>=0)
strFileName+=“.csv”;
其他的
strFileName+=“.xls”;
strMetype=strMetype | |“应用程序/八位字节流”;
if(window.MSBlobBuilder){//IE10+例程
var bb=新的MSBlobBuilder();
bb.追加(strData);
返回navigator.msSaveBlob(bb,strFileName);
}/*如果结束(window.MSBlobBuilder)*/
如果('download'在a中){//html5 a[下载]
如果(!window.URL){
a、 href=window.URL.createObjectURL(新Blob([strData]);
}否则{
a、 href=“数据:”+strimetype+,“+encodeURIComponent(strData);
}
a、 setAttribute(“下载”,strFileName);
a、 innerHTML=“下载…”;
D.儿童的身体(a);
setTimeout(函数(){
a、 单击();
D.body.removeChild(a);
}, 66);
返回true;
}/*如果结束(a中的“下载”)*/
//是否下载iframe数据URL(旧ch+FF):
var f=D.createElement(“iframe”);
D.儿童的身体(f);
f、 src=“数据:”+strimetype+,“+encodeURIComponent(strData);
setTimeout(函数(){
D.身体移除儿童(f);
}, 333);
返回true;
}/*下载结束()*/

行标题
行标题
行标题
11
11
22
22
22
22

这可能不是您想要的,但我有一个web应用程序,可以在格式良好的表格中显示数据,如果他们想要在excel中显示数据,我只需将完全相同的数据写入一个新页面,但将标题更改为mime类型excel,效果非常好!获取格式、颜色等。很好地显示标题。只是一个想法。

除日期格式外,它还舍入了数字。此解决方案解决了这两个问题

HTML:


名称
年月日
身份证件
{{item.name}
//这个t='s'解决了这个问题。
{{item.dob}
{{item.id}
出口表二
TS代码:

导入{
组成部分,
ViewChild,
ElementRef
}从“@angular/core”开始;
从“XLSX”导入*作为XLSX;
进口{
可观察
}来自“rxjs/可观察”;
@组成部分({
选择器:'应用程序根',
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
@ViewChild('table')表:ElementRef;
@ViewChild(‘表1’)表1:ElementRef;
颜色=[{
名称:“Rubecaa”,
dob:'11/10/1998',
id:'100010000201101AB'
},
{
名称:“泽纳”,
dob:'17/11/1998',
id:'100010002020201010'
}//Id是字符串,但有时可能只包含数字。
];
重要的2(){
const ws:XLSX.WorkSheet=XLSX.utils.table_to_sheet(this.table1.nativeElement);
const wb:XLSX.WorkBook=XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb,ws,“Sheet1”);
/*保存到文件*/
writeFile(wb,表2.XLSX');
}
}

你能试试看吗
oExcel.Cells(y+1,x+1).NumberFormat=14
看看这是否有效?我稍后会尝试。谢谢。它在单元格中插入“14”,将日期格式化为dd/mm/yyyyy,并将结果显示为mm/dd/yyyy。这里已经有一个类似的问题,请参见:稍后再试。我正要放弃我正在使用的代码,因为它只适用于IE。我正要搜索一个独立的浏览器解决方案。谢谢,谢谢。它在IE11中不起作用,在Firefox中下载文件,但在excel中提醒用户文件不同。打开文件时,所有数据都在第一列中。我使用的解决方案很好,因为它可以打开excel,在没有警告用户的情况下使用数据。我们可以用同样的行为得到你的解决方案吗?谢谢如果你可以发布示例表代码,那么我将尝试其他方法。表代码的结构与你上面发布的相同。谢谢我的主要问题是约会。我有2014年5月10日(dd/mm/yyyy),在excel中显示为mm/dd/yyyy