我有一个html文件:
<div id="tableDiv" style="display:none"></div>
里面有一段js:
//生成table
var maxCol = 7; //需要生成的列数量
var strTbody = ["<table border='1' id='tb'><tbody>"];
var xl = 0;
strTbody.push("<tr>");
strTbody.push("<td>序号</td>");
strTbody.push("<td>cTelNum</td>");
strTbody.push("<td>时间</td>");
strTbody.push("<td>位置</td>");
strTbody.push("<td>时速</td>");
strTbody.push("<td>里程</td>");
strTbody.push("</tr>");
for (var v = 0; v < currentlen; v++) {
strTbody.push("<tr>");
var info = totalpoint[i][v].split(',');
var y = parseFloat(info[1]);
var x = parseFloat(info[0]);
var speed = info[2];
var TelNum = info[3];
var TrackTime = info[4];
var geocoder = new GClientGeocoder();
var latlng = new GLatLng(y, x);
geocoder.getLocations(latlng, showAddress); if (addr == null || addr.length < 1 || addr == "") {
addr = y.toFixed(2) + ", " + x.toFixed(2);
}
xl++;
strTbody.push("<td>" + xl + "</td>");
strTbody.push("<td>" + TelNum + "</td>");
strTbody.push("<td>" + TrackTime + "</td>");
strTbody.push("<td>" + addr + "</td>");
strTbody.push("<td>" + speed + "Km/h</td>");
strTbody.push("<td>" + (lc[i][v] / 1000).toFixed(2) + "Km</td>");
strTbody.push("</tr>");
}
strTbody.push("</tbody></table>");
var obj = document.getElementById("tableDiv");
obj.innerHTML = strTbody.join("");现在我要把这里动态生成的table导出Excel,不要用activex控件,请问该怎么办
<div id="tableDiv" style="display:none"></div>
里面有一段js:
//生成table
var maxCol = 7; //需要生成的列数量
var strTbody = ["<table border='1' id='tb'><tbody>"];
var xl = 0;
strTbody.push("<tr>");
strTbody.push("<td>序号</td>");
strTbody.push("<td>cTelNum</td>");
strTbody.push("<td>时间</td>");
strTbody.push("<td>位置</td>");
strTbody.push("<td>时速</td>");
strTbody.push("<td>里程</td>");
strTbody.push("</tr>");
for (var v = 0; v < currentlen; v++) {
strTbody.push("<tr>");
var info = totalpoint[i][v].split(',');
var y = parseFloat(info[1]);
var x = parseFloat(info[0]);
var speed = info[2];
var TelNum = info[3];
var TrackTime = info[4];
var geocoder = new GClientGeocoder();
var latlng = new GLatLng(y, x);
geocoder.getLocations(latlng, showAddress); if (addr == null || addr.length < 1 || addr == "") {
addr = y.toFixed(2) + ", " + x.toFixed(2);
}
xl++;
strTbody.push("<td>" + xl + "</td>");
strTbody.push("<td>" + TelNum + "</td>");
strTbody.push("<td>" + TrackTime + "</td>");
strTbody.push("<td>" + addr + "</td>");
strTbody.push("<td>" + speed + "Km/h</td>");
strTbody.push("<td>" + (lc[i][v] / 1000).toFixed(2) + "Km</td>");
strTbody.push("</tr>");
}
strTbody.push("</tbody></table>");
var obj = document.getElementById("tableDiv");
obj.innerHTML = strTbody.join("");现在我要把这里动态生成的table导出Excel,不要用activex控件,请问该怎么办
function show() {
var w = window.open("aaa.htm");
w.document.open();
w.document.write(document.getElementById("tableDiv").innerHTML);
w.document.close();
}请问该什么导出到Excel啊???????
function preview() {
window.clipboardData.setData("Text",document.all('table1').outerHTML);
try
{
var ExApp = new ActiveXObject("Excel.Application")
var ExWBk = ExApp.workbooks.add()
var ExWSh = ExWBk.worksheets(1)
ExApp.DisplayAlerts = false
ExApp.visible = true
}
catch(e)
{
alert("您的电脑没有安装Microsoft Excel软件!")
return false
}
ExWBk.worksheets(1).Paste;
}
</script>
这个我用过了,客户不满意
Response.Clear();
Response.Buffer = true;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("销售记录统计表(" + DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒") + ")", System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
System.Text.StringBuilder writer = new System.Text.StringBuilder();
//写表头
writer.Append("客户名称");
writer.Append("\t");//分隔符
writer.Append("客户类型");
writer.Append("\t");//分隔符
writer.Append("销售日期");
writer.Append("\t");
writer.Append("产品名称");
writer.Append("\t");
writer.Append("数量");
writer.Append("\t");
writer.Append("单价");
writer.Append("\t");
writer.Append("金额");
writer.Append("\n");//换行
//写表的内容
foreach (var item in data.ToList())
{
writer.Append(item.Name);
writer.Append("\t");
writer.Append(item.TypeName);
writer.Append("\t");
writer.Append(item.SalesDate);
writer.Append("\t");
writer.Append(item.ProductName);
writer.Append("\t");
writer.Append(item.Amount);
writer.Append("\t");
writer.Append(item.Price);
writer.Append("\t");
writer.Append(item.TotalPrice);
writer.Append("\n");
}
Response.Write(writer.ToString());
Response.End();可以这样生成,服务器上不需要安装EXCEL。
/// 生成EXCEL文件
/// _til是表格的标题,_row是表格的行数,_col是表格的列数,_dt是数据表,_filename是保存的EXCEL表的名称
/// </summary>
public void SaveToExcel(string _til, int _row, int _col, DataTable _dt, string _filename)
{
Microsoft.Office.Interop.Owc11.SpreadsheetClass xlsheet = new Microsoft.Office.Interop.Owc11.SpreadsheetClass();
//合并单元格
xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[1, _col]).set_MergeCells(true);
// xlsheet.get_Range(xlsheet.Cells[2, 1], xlsheet.Cells[3, 2]).set_MergeCells(true);
xlsheet.ActiveSheet.Cells[1, 1] = _til;
//字体加粗
xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[1, _col]).Font.set_Bold(true);
//单元格文本水平居中对齐
xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[_row + 2, _col]).set_HorizontalAlignment(Microsoft.Office.Interop.Owc11.XlHAlign.xlHAlignCenter);
//设置字体大小
xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[1, _col]).Font.set_Size(14);
//设置列宽
//xlsheet.get_Range(xlsheet.Cells[1, 3], xlsheet.Cells[1, 3]).set_ColumnWidth(50); //画边框线
xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[_row + 2, _col]).Borders.set_LineStyle(Microsoft.Office.Interop.Owc11.XlLineStyle.xlContinuous); //定义一个2维数组用来存储DATATABLE里的数据
object[,] dataArray = new object[_row, _col];
//添加列名
for (int k = 0; k < _dt.Columns.Count; k++)
{
xlsheet.ActiveSheet.Cells[2, k + 1] = _dt.Columns[k].Caption.ToString();
}
//把DATATABLE里的数据导到2维数组中
for (int i = 0; i < _row; i++)
{
for (int j = 0; j < _col; j++)
{
dataArray[i, j] = _dt.Rows[i][j];
}
}
//把2维数组中的数据导到EXCEL中
xlsheet.get_Range("A3", xlsheet.Cells[_row + 2, _col]).Value2 = dataArray;
xlsheet.Export(_filename, Microsoft.Office.Interop.Owc11.SheetExportActionEnum.ssExportActionNone, Microsoft.Office.Interop.Owc11.SheetExportFormat.ssExportXMLSpreadsheet);
}
/// <summary>
/// 导入EXCEL表
/// </summary>
/// <param name="strFileName"></param>
/// <returns></returns>
public DataSet CreateDataSource(string strFileName, string Sqlstr)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileName + "; Extended Properties=Excel 8.0;";
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter(Sqlstr, olecon);
DataSet myds = new DataSet();
myda.Fill(myds);
return myds;
}
这个可以我用过的。你看看行不?
<HTML>
<HEAD>
<title>WEB页面导出为EXCEL文档的方法
</title>
</HEAD>
<body>
<BR>
<table id = "PrintA" width="100%" border="1" cellspacing="0" cellpadding="0" bgcolor = "#61FF13">
<TR style="text-align : center;">
<TD>1</TD>
<TD>2</TD>
<TD>2</TD>
<TD>2</TD>
</TR>
<TR style="text-align : center;">
<TD>单元格A</TD>
<TD>单元格A</TD>
<TD>单元格A</TD>
<TD>单元格A</TD>
</TR>
<TR>
<TD colSpan=4 style="text-align : center;"><font color="BLUE" face="Verdana">单元格合并行A</FONT></TD>
</TR>
</TABLE>
<BR>
<table id = "PrintB" width="100%" border="1" cellspacing="0" cellpadding="0">
<TR style="text-align : center;">
<TD>单元格B</TD>
<TD>单元格B</TD>
<TD>单元格B</TD>
<TD>单元格B</TD>
</TR>
<TR>
<TD colSpan=4 style="text-align : center;">单元格合并行B</TD>
</TR>
</TABLE>
<br><br><br>
<input type="button" value="导出页面指定区域内容到Word">
<input type="button" value="导出页面指定区域内容到Excel">
<input type="button" value="导出表单单元格内容到Excel">
<SCRIPT LANGUAGE="javascript">
//指定页面区域内容导入Excel
function AllAreaExcel()
{
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var sel=document.body.createTextRange();
sel.moveToElementText(PrintA);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();
oXL.Visible = true;
}
//指定页面区域“单元格”内容导入Excel
function CellAreaExcel()
{
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var Lenr = PrintA.rows.length;
for (i=0;i<Lenr;i++)
{
var Lenc = PrintA.rows(i).cells.length;
for (j=0;j<Lenc;j++)
{
oSheet.Cells(i+1,j+1).value = PrintA.rows(i).cells(j).innerText;
}
}
oXL.Visible = true;
}
//指定页面区域内容导入Word
function AllAreaWord()
{
var oWD = new ActiveXObject("Word.Application");
var oDC = oWD.Documents.Add("",0,1);
var oRange =oDC.Range(0,1);
var sel = document.body.createTextRange();
sel.moveToElementText(PrintA);
sel.select();
sel.execCommand("Copy");
oRange.Paste();
oWD.Application.Visible = true;
//window.close();
}
</SCRIPT>
</body></html>
try
{
var oXL = new ActiveXObject("Excel.Application"); //创建excel应用程序对象
var oWB = oXL.Workbooks.Add(); //创建工作簿
var oSheet = oWB.ActiveSheet; //获取当前活动的工作簿
var table = document.all.tb; //获取当前页面中的表格
if (table != null) {
var hang = table.rows.length; //获取表格有多少行 if (hang > 0) {
var lie = table.rows(0).cells.length; //获取首行有多少列-多少标题 for (i = 0; i < hang; i++) //添加标题到表格中
{
for (j = 0; j < lie; j++) {
oSheet.Cells(i + 1, j + 1).Value = table.rows(i).cells(j).innerText; //设置标题的内容
}
}
oXL.Visible = true; //设置Excel的属性
oXL.UserControl = true;
}
}
else {
alert('EXCEL为空');
}
}
catch (e) {
alert("使用此功能必须在先安装ActiveX控件,然后在浏览器中设置:Internet选项->安全->自定义级别->对未标记的ActiveX控件启用。");
}
}一开始我就这样做的,被经理狠批了一顿