導出的excel的是一個項目的基本功能 所以不多說 我們項目用的npoi 可以直接在vs的NuGet里面直接搜索下載 安裝就可以用了
//創建一個excel
HSSFWorkbook hwb = new HSSFWorkbook();
//創建一個excel中的表格
HSSFSheet sheet = (HSSFSheet)hwb.CreateSheet("sheet1");
//創建一個公司的title
HSSFRow headerrow = (HSSFRow)sheet.CreateRow(0);
headerrow.Height = 650;
HSSFCell headercell = (HSSFCell)headerrow.CreateCell(0);
headercell.SetCellValue("xxx有限公司");
//創建一個單元格樣式
HSSFCellStyle cs = (HSSFCellStyle)hwb.CreateCellStyle();
//垂直居中
cs.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
//水平居中
cs.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
//設置\n自動換行
cs.WrapText = true;
//給單元格設置樣式
headercell.CellStyle = cs;
HSSFFont hf = (HSSFFont)hwb.CreateFont();
hf.Boldweight = 900;//設置字體加粗
hf.FontHeight = 260;//字體的高度
hf.Color = HSSFColor.Blue.Index;//設置字體顏色
cs.SetFont(hf);
//合並單元格
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 46));
//創建行下面的列
這部分代碼只是在創建excel 以及設置excel的樣式 還沒有進行導入
List<PowerRate> lit = new List<PowerRate>();
lit = _powerrate.GetPowerRateAll();//數據源 導出的數據
HSSFRow row1 = (HSSFRow)sheet.CreateRow(1); //表示從第幾行開始寫入
接下來就是創建表頭
//創建表頭
HSSFRow row1 = (HSSFRow)sheet.CreateRow(1); //創建行下面的列 row1.CreateCell(0).SetCellValue("xx"); row1.CreateCell(1).SetCellValue("xxx"); row1.CreateCell(2).SetCellValue("xxx"); row1.CreateCell(3).SetCellValue("xxx");
接着寫入內容
for (int i = 0; i < lit.Count; i++)
{
//創建行
HSSFRow row = (HSSFRow)sheet.CreateRow(i + 2); // i+2 表示從第二行開始寫入數據 第一行是表頭
//創建行下面的列
row.CreateCell(0).SetCellValue(lit[i].City);
row.CreateCell(1).SetCellValue(lit[i].County);
row.CreateCell(2).SetCellValue(lit[i].StatiocCode);
row.CreateCell(3).SetCellValue(lit[i].StationName);
}
接着就是寫入流 然后在瀏覽器端生成一個excel
MemoryStream ms = new MemoryStream();
string filename = DateTime.Now.ToString("yyyyMMddHHmmss");
hwb.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
我用的asp.net MVC 那么控制器的類型應該是 FileResult 返回的是return File(ms, "application/vnd.ms-excel", filename + ".xls");
然后在瀏覽器就可以生成一個你需要的excel了 由於本人還是個菜鳥 所以只知道怎么用 后續的具體原理還在研究
