在页面的<br />导致导出Excel中是会以多行的方式显示,达不到页面在一个单元格中进行换行,为此我们有以下两种方式:

1.CSS样式方式

  1. <br style=\'mso-data-placement:same-cell;\'/>

  

2.JS方式,如果能够100%命中的话,采用这种方式最好。

  1. <script type="text/javascript">
  2. function toPcmExcel() {
  3. var myExcel, myBook;
  4. try {
  5. myExcel = new ActiveXObject("Excel.Application");
  6. } catch (e) {
  7. try {
  8. myExcel = new ActiveXObject("ET.Application");
  9.  
  10. } catch (e) {
  11. alert("您的电脑没有安装Microsoft Excel或WPS软件!");
  12. return;
  13. }
  14. }
  15. var excelRep = "------";
  16. var sel = document.body.createTextRange();
  17. var obj = document.getElementById("div_Report");
  18. var html = obj.innerHTML;//html副本
  19. obj.innerHTML = obj.innerHTML.replace(/<br\s*\/?>/gi, (excelRep));
  20. sel.moveToElementText(document.all.div_Report);
  21. sel.select();
  22. document.execCommand(\'Copy\');
  23. document.execCommand(\'Unselect\');
  24. myExcel.Visible = true;
  25. myBook = myExcel.Workbooks.Add();
  26. var sheet = myBook.sheets(1);
  27. sheet.name = document.all.tb_hiddenReportTitle.innerText;
  28. sheet.columns.ColumnWidth = 20;
  29. sheet.columns(3).ColumnWidth = 25;
  30. sheet.columns(5).ColumnWidth = 25;
  31. sheet.paste();
  32. obj.innerHTML = html;//恢复副本
  33. var itemCount = 2;
  34. for (var i = 1; i < 1000; i++) {
  35. //替换命中值
  36. if (sheet.rows(i).cells(1).value == priceText) {
  37. sheet.rows(i).cells(2).replace(excelRep, \'\n\');//将页面<br>换成Excel的换行符
  38. itemCount--;
  39. }
  40. if (sheet.rows(i).cells(1).value == CartonNoText) {
  41. sheet.rows(i).cells(2).replace(excelRep, \'\n\');
  42. itemCount--;
  43. }
  44. if (itemCount == 0) break;
  45. }
  46. }
  47. </script>

  

版权声明:本文为magic_evan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/magic_evan/p/4940296.html