前端生成的html表格經常需要導出到excel中,利用JS和Office控件可以做到,但僅限于IE,還要啟用安全設定。
想找一個簡單的辦法将HTML内容直接轉換成Excel檔案,如果直接修改網頁頭資訊輸出,雖然可以導出,但打開時會提示格式不是Excel的,怎樣才能導出真正的Excel檔案?
aspose.cells是個功能強大的控件,可以友善的生成excel檔案。經考慮,将html發送到背景,儲存為xls檔案(其實是html内容),再用aspose.cells打開,輸出到用戶端,這樣就變成了真正的excel檔案了。
基本代碼:
2 | ddsf | s |
3 | sfas | f |
5 | ggg | g |
fffg | ||
z | f |
function toExcel() {
if (!document.getElementById('div_div_div_1234567890')) {
$('body').append("
"
+ ""
+ "
"
+ ""
+ "
"
+ "
");
}
document.getElementById('input_input_input_1234567890').value = document.getElementById('table1').outerHTML;
document.getElementById('form_form_form_1234567890').action = "htmlTableToExcel.ashx"
document.getElementById('form_form_form_1234567890').submit();
}
htmlTableToExcel.ashx:
using System;
using System.Web;
using Aspose.Cells;
using System.IO;
using System.Text;
public class htmlTableToExcel : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string table = context.Request["table"];
//test info
if (table == null || table == "")
{
table = @"
abc | 123 | 這是測試資訊 |
";
}
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter( stream );
writer.Write( table );
writer.Flush();
//加載選項,html,否則會出錯
LoadOptions lo = new LoadOptions(LoadFormat.Html);
Workbook wb = new Workbook(stream, lo);
//輸出到浏覽器
wb.Save(context.Response, "output.xls", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003));
}
public bool IsReusable
{
get
{
return false;
}
}
}
以上為簡單的測試代碼,經檢驗可以生成excel檔案,隻是格式方面像邊框、寬度什麼的就沒有了,合并單元格什麼的能保留;要是要求不高就将就用着吧。
Aspose.Cells Smart markers 基于模闆導出Excel
Aspose.Cells可以預先定義Excel模闆,然後填充資料(官方文檔:http://www.aspose.com/docs/display/cellsjava/Smart+Markers). 設 ...
c#使用aspose.cells 從datatable導出資料到excel
string json=value.Value; DataTable dt=Utils.JsonDataTableConvert.ToDataTable(json); string fileName ...
C# 讀寫Excel的一些方法,Aspose.Cells.dll
需求:現有2個Excel,一個7000,一個20W,7000在20W是完全存在的.現要分離20W的,拆分成19W3和7000. 條件:兩個Excel都有“登入名”,然後用“登入名”去關聯2個Excel ...
Aspose Cells 添加資料驗證(動态下拉清單驗證)
參考 :http://www.componentcn.com/kongjianjishu/kongjianjishu/2015-06-04/2781.html Aspose Cells是一款操作和處理 ...
C# Aspose.Cells方式導入Excel檔案
讀取Excel 類 我傳回的是DataTable 類型 也可以傳回DataSet類型 public class XlsFileHelper { public DataTable ImportExcel ...
常用類-Excel-使用Aspose.Cells插件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
C#使用Aspose.Cells導出Excel簡單實作
首先,需要添加引用Aspose.Cells.dll,官網下載下傳位址:http://downloads.aspose.com/cells/net 将DataTable導出Xlsx格式的檔案下載下傳(網頁輸出) ...
使用Aspose.Cells讀取Excel
最新更新請通路: http://denghejun.github.io Aspose.Cells讀取Excel非常友善,以下是一個簡單的實作讀取和導出Excel的操作類: 以下是Aspose.Ce ...
Aspose.Cells 首次使用,用到模版填充資料,合并單元格,換行
Aspose.Cells 首次使用,用到模版填充資料,合并單元格,換行 模版格式,圖格式是最簡單的格式,但實際效果不是這種,實際效果圖如圖2 圖2 ,注意看紅色部分,一對一是正常的,但是有一對多的訂單 ...
随機推薦
UIRefreshControl
在iOS6中UITableViewController 已經內建了UIRefreshControl 控件.UIRefreshControl目前隻能用于UITableViewController
C++混合程式設計之idlcpp教程Python篇(8)
上一篇在這 C++混合程式設計之idlcpp教程Python篇(7) 第一篇在這 C++混合程式設計之idlcpp教程(一) 與前面的工程相似,工程PythonTutorial6中,同樣加入了四個檔案:Pyt ...
selenium 3 對我們的影響
The major change in Selenium 3.0 is we're removing the original Selenium Core implementation and rep ...
C++中 :: 的意思
表示作用域,和所屬關系 ::是運算符中等級最高的,它分為三種:1)global scope(全局作用域符),用法(::name)2)class scope(類作用域符),用法(class::name) ...
[原創] 初識Agile/CMMI/Scrum
一.背景介紹 在朋友(aehyok)的建議下,初步去了解Visual Studio Online,簡稱VS Online(即原來的 Team Foundation Service,簡稱TFS) VS ...
vs如何建立自己工程的環境變量(局部)和 Windows系統(全局).
來源:http://blog.csdn.net/jtop0/article/details/7574139 在vs2008的Project->Property設定裡經常會看到類似$ ...
Myeclipse 8.5 優化設定
1.1 更改JavaScript檔案預設編碼 1.2 關閉Myeclipse不需要的啟動項 1.3 取消Myeclipse自動更新 1.4 關閉Myeclipse自動驗證 1.5 設定Myeclips ...
mysql SQL文法總結
mysql主鍵操作 删除表主鍵: alter table student drop primary key; 增加表主鍵: alter table student add primary key(id ...
python中的面向對象學習以及類的多态
接下來類的第三個重要的特性:多态(一種接口,多種實作) 多态性(polymorphisn)是允許你将父對象設定成為和一個或更多的他的子對象相等的技術,指派之後,父對象就可以根據目前指派給它的子對象的特 ...