匯出資料:資料大部分都是表格形式,所以經常需要匯入到Excel中,檔案的匯入匯出利用了瀏覽器的檔案下載功能,但是都用window.open打開新視窗來下載,在本頁面打開,瀏覽器很難識別到需要下載的檔案
首先要聯表查詢需要匯出的資料,有兩種msoffice excel 、NPOI(JAVA POI)選擇,通常我們都使用后者進行匯出操作
1、 創建作業簿
NPOI.HSSF.UserModel.HSSFWorkbook workbook= new NPOI.HSSF.UserModel.HSSFWorkbook();
2、創建作業表
NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet();
修改作業表名稱
自定義名稱.SetSheetName(0, "作業表名稱");
3、設定表標題
1).創建行
NPOI.SS.UserModel.IRow rowTitle = sheet1.CreateRow(0);//下標
rowTitle.HeightInPoints = 35;//行高 HeightInPoints的單位是點,而Height的單位是1/20個點,所以Height的值永遠是HeightInPoints的20倍
2).創建單元格
NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
3).單元格設定值
string strTitle = "單元格標題";
cell0.SetCellValue(strTitle);
4).合并單元格
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6));// 0, 0, 0, 6代表第一行合并6個單元格
5).設定單元格樣式
NPOI.SS.UserModel.ICellStyle
cellStyle_Title=workbook.CreateCellStyle();
cellStyle_Title.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellStyle_Title.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
NPOI.SS.UserModel.IFont font_title = workbook.CreateFont();//宣告字體
ont_title.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;//設定字體顏
font_title.Boldweight=(short)NPOI.SS.UserModel.FontBoldWeight.Bold;//加粗
font_title.FontHeightInPoints = 18;//字體大小
cellStyle_Title.SetFont(font_title);//設定單元格字體
cell0.CellStyle = cellStyle_Title;//設定單元格樣式
4、設定表頭
1).創建一行 索引
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(1);//給sheet添加第一行的
2).創建單元格 并設定值
row1.CreateCell(0).SetCellValue("序號");
row1.CreateCell(1).SetCellValue("旅客姓名");
row1.CreateCell(2).SetCellValue("證件號碼");
row1.CreateCell(3).SetCellValue("聯系人電話");
3).創建表頭的樣式
NPOI.SS.UserModel.ICellStyle cellStyle_header = workbook.CreateCellStyle();//宣告樣式
cellStyle_header.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellStyle_header.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
4).設定背景顏色
cellStyle_header.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;
cellStyle_header.FillForegroundColor=NPOI.HSSF.Util.HSSFColor.Aqua.Index;
5).設定邊框線為實線
cellStyle_header.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_header.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
6).設定字體
NPOI.SS.UserModel.IFont font_header = workbook.CreateFont();//宣告字體
font_header.Boldweight=(short)NPOI.SS.UserModel.FontBoldWeight.Bold;//加粗
font_header.FontHeightInPoints = 10;//字體大小
cellStyle_header.SetFont(font_header);//加入單元格
//給單元格設定樣式 回圈
for (int i = 0; i < row1.Cells.Count; i++)
{ row1.GetCell(i).CellStyle = cellStyle_header;}
5、遍歷查詢到的資料,設定表格資料
1).創建資料內部部分 單元格樣式
NPOI.SS.UserModel.ICellStyle cellstyle_value = workbook.CreateCellStyle();//宣告樣式
cellstyle_value.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellstyle_value.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
2).遍歷資料,創建資料部分行列
for (int i = 0; i < list.Count; i++)
{
1.創建行
NPOI.SS.UserModel.IRow row = sheet1.CreateRow(2 + i);//標題和表頭已經占了兩行
row.Height = 22 * 20;//設定行高
2.創建列,并設定值
row.CreateCell(0).SetCellValue(i + 1);//序號
row.CreateCell(1).SetCellValue(list[i].passengerName);
row.CreateCell(4).SetCellValue(list[i].certificatesCode);
row.CreateCell(6).SetCellValue(list[i].contactPhone);
3.給每個單元格添加樣式
for (int j = 0; j < row.Cells.Count; j++)
{row.GetCell(j).CellStyle = cellstyle_value;}
6,設定列寬為自動適應
for (int i = 0; i < sheet1.GetRow(1).Cells.Count; i++)
{sheet1.AutoSizeColumn(i);
sheet1.SetColumnWidth(i, sheet1.GetColumnWidth(i) * 17 / 10); }
7、 把創建好的Excel輸出到瀏覽器
string fileName = "旅客資訊" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
把Excel轉化為流輸出
MemoryStream BookStream = new MemoryStream();//定義流
workbook.Write(BookStream);//將作業薄寫入流
BookStream.Seek(0, SeekOrigin.Begin);//輸出之前呼叫Seek(偏移量,游標位置)
return File(BookStream,"application/vnd.ms-excel",fileName);//檔案型別/名稱
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/16188.html
標籤:非技術區
上一篇:增刪查改
下一篇:上傳圖片
