调用ActiveX控件把页面内容直接导入excel

第一种:逐个单元格导出法(此方法操作相对复杂,但是比较灵和,适合对导出表有要求的情况)

javascript代码如下  
<SCRIPT LANGUAGE="javascript">   
function ExcelExport(tableid)   
{   
    var table = document.getElementById(tableid); //获取页面的table  
    var excel = new ActiveXObject("Excel.Application"); //实例化Excel.Application对象  
    var workB = excel.Workbooks.Add(); 添加新的工作簿  
    var sheet = workB.ActiveSheet;   
//var sheet= workB.Worksheets(1);//该句代码和上句代码同意,都是激活一个sheet  
/***************常用样式设置语句***************************************/
    //sheet.Rows(1).WrapText = false; //自动换行设置  
    //sheet.Rows(1).Font.Size=18;//设置第一行的字体大小  
    //sheet.Rows(1).Interior.ColorIndex=2;//设置第一行背景色   
    //sheet.Rows(1).Font.ColorIndex=1;//设置第一行字体色     
    //sheet.Range(sheet.Cells(1,1),sheet.Cells(1,7)).mergecells=true;//第一行1到7单元格合并  
    sheet.Columns("A").ColumnWidth =35;//设置列宽  
    sheet.Columns("B").ColumnWidth =35;  
    //sheet.Columns("A:B").ColumnWidth =35;//另一种设置列宽的方式  
    sheet.Rows(1).RowHeight = 35;//设置行高  
    //sheet.Rows(1).Font.Name="黑体";//设置字体  
     //sheet.Columns.AutoFit;//所有列自适应宽度  
     //水平对齐方式(貌似-4108为水平居中)  
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).HorizontalAlignment =-4108;  
    //垂直对齐方式  
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).VerticalAlignment =-4108;  
    //根据Borders()中参数值设置各个方向边距,1,2,3,4--->top,buttom,left,right  
    //sheet.Range( sheet.Cells(2,1),sheet.Cells(1,5)).Borders(1).Weight = 2;  
/**将页面table写入到Excel中,具体复杂情况(合并单元格等)可在这里面具体操作**********/
    var LenRow = table .rows.length; //以下为循环遍历获取页面table的cell元素  
    for (i = 0; i < LenRow ; i++)   
    {   
        var lenCol = table.rows(i).cells.length;   
        for (j = 0; j < lenCol ; j++)   
        {   
            sheet.Cells(i + 1, j + 1).value = table.rows(i).cells(j).innerText; //通过该语句将table的每个  
                                        //cell赋予Excel 当前Active的sheet下的相应的cell下  
        }   
    }   
    excel.Visible = true;//设置excel为可见  
excel.UserControl = true; //将Excel交由用户控制  
}   
</SCRIPT>
javascript代码如下
<SCRIPT LANGUAGE="javascript">
function ExcelExport(tableid)
{
    var table = document.getElementById(tableid); //获取页面的table
    var excel = new ActiveXObject("Excel.Application"); //实例化Excel.Application对象
    var workB = excel.Workbooks.Add(); 添加新的工作簿
    var sheet = workB.ActiveSheet;
//var sheet= workB.Worksheets(1);//该句代码和上句代码同意,都是激活一个sheet
/***************常用样式设置语句***************************************/
    //sheet.Rows(1).WrapText = false; //自动换行设置
    //sheet.Rows(1).Font.Size=18;//设置第一行的字体大小
    //sheet.Rows(1).Interior.ColorIndex=2;//设置第一行背景色
    //sheet.Rows(1).Font.ColorIndex=1;//设置第一行字体色  
    //sheet.Range(sheet.Cells(1,1),sheet.Cells(1,7)).mergecells=true;//第一行1到7单元格合并
    sheet.Columns("A").ColumnWidth =35;//设置列宽
    sheet.Columns("B").ColumnWidth =35;
    //sheet.Columns("A:B").ColumnWidth =35;//另一种设置列宽的方式
    sheet.Rows(1).RowHeight = 35;//设置行高
    //sheet.Rows(1).Font.Name="黑体";//设置字体
     //sheet.Columns.AutoFit;//所有列自适应宽度
     //水平对齐方式(貌似-4108为水平居中)
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).HorizontalAlignment =-4108;
    //垂直对齐方式
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).VerticalAlignment =-4108;
    //根据Borders()中参数值设置各个方向边距,1,2,3,4--->top,buttom,left,right
    //sheet.Range( sheet.Cells(2,1),sheet.Cells(1,5)).Borders(1).Weight = 2;
/**将页面table写入到Excel中,具体复杂情况(合并单元格等)可在这里面具体操作**********/
    var LenRow = table .rows.length; //以下为循环遍历获取页面table的cell元素
    for (i = 0; i < LenRow ; i++)
    {
        var lenCol = table.rows(i).cells.length;
        for (j = 0; j < lenCol ; j++)
        {
            sheet.Cells(i + 1, j + 1).value = table.rows(i).cells(j).innerText; //通过该语句将table的每个
                                        //cell赋予Excel 当前Active的sheet下的相应的cell下
        }
    }
    excel.Visible = true;//设置excel为可见
excel.UserControl = true; //将Excel交由用户控制
}
</SCRIPT>

第二种方法:

//导出excel

    function method1(tableid) {
         var curTbl = document.getElementById(tableid);
         var oXL;
         try{
             oXL = new ActiveXObject("Excel.Application");
        }catch (e) {
            alert("无法启动Excel!\n\n如果您的电脑中已经安装了Excel,由于导出Excel使用了ActiveX控件,"+"需要调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
            return;
        }
        var oWB = oXL.Workbooks.Add(); //创建AX对象excel
        var oSheet = oWB.ActiveSheet; //获取workbook对象
        var sel = document.body.createTextRange(); //激活当前sheet
        sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中
        sel.select(); //全选TextRange中内容
        sel.execCommand("Copy"); //复制TextRange中内容
        oSheet.Paste(); //粘贴到活动的EXCEL中
        oSheet.Columns("A").ColumnWidth =7;//设置列宽
        oSheet.Columns("B").ColumnWidth =6;//设置列宽
        oSheet.Columns("C").ColumnWidth =10;//设置列宽
        oSheet.Columns("F").ColumnWidth =8;//设置列宽
        oSheet.Columns("E").ColumnWidth =8;//设置列宽
        oSheet.Columns("F").ColumnWidth =4;//设置列宽
        oSheet.Columns("G"+":"+"IV").ColumnWidth =4;//设置列宽
        oSheet.Columns("A"+":"+"IV").WrapText=true; //设置自动换行
        oSheet.Rows(1+":"+5).HorizontalAlignment = 3; //设置第一到第五行是居中显示
        //获得table的行数
        var tab = document.getElementById("tableID");
        var rowNum = tab.rows.length;
        oSheet.Rows((rowNum-3)+":"+rowNum).HorizontalAlignment = 3; //设置第一到第五行是居中显示
        oSheet.Rows(1+":"+1).RowHeight =20;
        oSheet.Rows(2+":"+5).RowHeight =15;
        oXL.Visible = true; //设置excel可见属性

    }


   <div>
    导出数据:<a href="javascript:method1('tableID')"><span class="export excel">导出Excel...</span></a>
</div>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用Qt的QAxObject和QTableWidget来实现将TableWidget中的内容导入Excel文件中。 QAxObject是Qt提供的一个ActiveX控件,可以用来操作Microsoft Office软件,包括Excel。通过QAxObject,你可以调用Excel的COM接口,实现将TableWidget中的内容导入Excel文件中的功能。 下面是一个示例代码: ```cpp #include <QTableWidget> #include <QAxObject> void ExportToExcel(QTableWidget* tableWidget, QString fileName) { QAxObject* excel = new QAxObject("Excel.Application", 0); excel->setProperty("Visible", false); QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Add"); QAxObject* sheets = workbook->querySubObject("Sheets"); QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 写入表头 for (int col = 0; col < tableWidget->columnCount(); col++) { QTableWidgetItem* headerItem = tableWidget->horizontalHeaderItem(col); if (headerItem) { QAxObject* cell = sheet->querySubObject("Cells(int, int)", 1, col+1); cell->setProperty("Value", headerItem->text()); } } // 写入数据 for (int row = 0; row < tableWidget->rowCount(); row++) { for (int col = 0; col < tableWidget->columnCount(); col++) { QTableWidgetItem* item = tableWidget->item(row, col); if (item) { QAxObject* cell = sheet->querySubObject("Cells(int, int)", row+2, col+1); cell->setProperty("Value", item->text()); } } } // 保存文件 workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(fileName)); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); delete excel; } ``` 在这个示例代码中,ExportToExcel()函数将TableWidget中的内容导出到指定的Excel文件中。其中,tableWidget参数是要导出的TableWidget控件,fileName参数是要保存的Excel文件名。这个函数使用QAxObject对象来操作Excel,首先创建一个Excel.Application对象,然后创建一个新的工作簿,获取第一个工作表,将TableWidget中的内容写入到工作表中,最后保存文件并退出Excel。 注意,使用QAxObject操作Excel需要安装Microsoft Office软件,并且需要在项目中添加Qt5AxContainer库。另外,这个示例代码假设TableWidget中的每个单元格都是QTableWidgetItem对象,如果你的TableWidget中使用了其他类型的单元格,你可能需要相应地修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郡麟天下

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值