Excel 솔 루 션 중 하나 인 NOPI 내 보 내기

19032 단어 Excel 내 보 내기
개요
엑셀 내 보 내기 기능 은 많은 사람들 이 했 을 것 이 라 고 믿 지만 이 기능 을 실현 하 는 해결 방안 은 여러 가지 가 있 습 니 다.오늘 저 는 여러분 이 비교적 새로운 것 을 소개 하지 않 았 습 니 다.사실은 새 롭 지 않 습 니 다-!NPOI 라 고 합 니 다.EXCEl 의 가 져 오기 와 내 보 내기 작업 을 완벽 하 게 조작 할 수 있 습 니 다.코드 를 같이 봅 시다.
2.DLL 가 져 오기
NOPI 를 실현 하려 면 제3자 DLL 을 사용 해 야 합 니 다.공식 다운로드 주 소 는 다음 과 같 습 니 다.http://npoi.codeplex.com/
3.빅 데이터 양 가 져 오기 문제
엑셀 2003 의 모든 sheet 의 가장 큰 줄 수 는 65536 이라는 것 을 잘 알 고 있 기 때문에 65535 이상 의 데 이 터 는 다른 sheet 에 기록 해 야 합 니 다.여 기 는 주의해 야 합 니 다.
코드
 1 public void ProcessRequest(HttpContext context)

 2         {

 3             context.Response.ContentType = "application/x-excel";

 4             string filename = HttpUtility.UrlEncode("    .xls");//     url  ,    

 5             context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);

 6 

 7             var list = bArchive.GetAllArchivesBase();

 8 

 9             HSSFWorkbook workBook = new HSSFWorkbook();

10             ISheet sheet1 = workBook.CreateSheet("   ");

11             //sheet  ,        65535

12             List<NPOI.SS.UserModel.ISheet> sheetList = new List<NPOI.SS.UserModel.ISheet>();

13             sheetList.Add(sheet1);

14             // sheet1    

15             SheetFirst(sheet1, workBook, list);

16             //   sheet        1  :     sheet  +1        

17             int rows = list.Count + 1;

18             int p = rows % 65535 == 0 ? rows / 65535 : (rows / 65535) + 1;

19             for (int i = 1; i < p; i++)

20             {

21                 ISheet sheet = workBook.CreateSheet("sheet" + (i + 1).ToString());

22                 // sheet    

23                 SheetElse(sheet, (i - 1) * 65535 + 65535, list);

24             }

25             //        

26             System.IO.MemoryStream ms = new System.IO.MemoryStream();

27             workBook.Write(ms);

28             context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));

29             context.Response.BinaryWrite(ms.ToArray());

30             workBook = null;

31             ms.Close();

32             ms.Dispose();

33         }

34 

35         //   Sheet,Excel     65536 

36         protected void SheetFirst(NPOI.SS.UserModel.ISheet sheet1, NPOI.HSSF.UserModel.HSSFWorkbook book, List<ArchivesBase> datalist)

37         {

38             //  

39             NPOI.SS.UserModel.ICell cellTitle = sheet1.CreateRow(0).CreateCell(0);

40             //cellTitle.SetCellValue("     --" + drpCategory.SelectedItem.Text);

41             cellTitle.SetCellValue("     ");

42             //       

43             NPOI.SS.UserModel.ICellStyle style = book.CreateCellStyle();

44             style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;

45             NPOI.SS.UserModel.IFont font = book.CreateFont();

46             font.FontHeight = 20 * 20;

47             style.SetFont(font);

48             cellTitle.CellStyle = style;

49             //     

50             sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 9));

51 

52             // sheet1          

53             NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(1);

54             row1.CreateCell(0).SetCellValue("   ");

55             row1.CreateCell(1).SetCellValue("  ");

56             row1.CreateCell(2).SetCellValue("  ");

57             row1.CreateCell(3).SetCellValue("    ");

58             row1.CreateCell(4).SetCellValue("    ");

59             row1.CreateCell(5).SetCellValue("    ");

60             row1.CreateCell(6).SetCellValue("   ");

61             //       sheet1   

62             for (int i = 0; i < 65535; i++)

63             {

64                 NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);

65                 rowtemp.CreateCell(0).SetCellValue(datalist[i].ArchivesNO == null ? "" : datalist[i].ArchivesNO.ToString());

66                 rowtemp.CreateCell(1).SetCellValue(datalist[i].PeopleName == null ? "" : datalist[i].PeopleName.ToString());

67                 rowtemp.CreateCell(2).SetCellValue(datalist[i].PeopleSex == null ? "" : datalist[i].PeopleSex.ToString());

68                 rowtemp.CreateCell(3).SetCellValue(datalist[i].ArchivesClass == null ? "" : datalist[i].ArchivesClass.ToString());

69                 rowtemp.CreateCell(4).SetCellValue(datalist[i].GraduateTime == null ? "" : datalist[i].GraduateTime.ToString());

70                 rowtemp.CreateCell(5).SetCellValue(datalist[i].ArchivesSchool == null ? "" : datalist[i].ArchivesSchool.ToString());

71                 rowtemp.CreateCell(6).SetCellValue(datalist[i].PeopleCardNO == null ? "" : datalist[i].PeopleCardNO.ToString());

72             }

73         }

74 

75         //  sheet  

76         protected void SheetElse(NPOI.SS.UserModel.ISheet sheet, int j, List<ArchivesBase> datalist)

77         {

78             //       sheet1   

79             for (int i = 0; j + i < datalist.Count; i++)//65535

80             {

81                 NPOI.SS.UserModel.IRow rowtemp = sheet.CreateRow(i);

82                 rowtemp.CreateCell(0).SetCellValue(datalist[j + i].ArchivesNO == null ? "" : datalist[j + i].ArchivesNO.ToString());

83                 rowtemp.CreateCell(1).SetCellValue(datalist[j + i].PeopleName == null ? "" : datalist[j + i].PeopleName.ToString());

84                 rowtemp.CreateCell(2).SetCellValue(datalist[j + i].PeopleSex == null ? "" : datalist[j + i].PeopleSex.ToString());

85                 rowtemp.CreateCell(3).SetCellValue(datalist[j + i].ArchivesClass == null ? "" : datalist[j + i].ArchivesClass.ToString());

86                 rowtemp.CreateCell(4).SetCellValue(datalist[j + i].GraduateTime == null ? "" : datalist[j + i].GraduateTime.ToString());

87                 rowtemp.CreateCell(5).SetCellValue(datalist[j + i].ArchivesSchool == null ? "" : datalist[j + i].ArchivesSchool.ToString());

88                 rowtemp.CreateCell(6).SetCellValue(datalist[j + i].PeopleCardNO == null ? "" : datalist[j + i].PeopleCardNO.ToString());

89             }

90         }

이상 코드 정원 에 많 습 니 다.o(∩∩)o 나중에 잊 어 버 리 지 않도록 쓰 는 김 에 배 워 볼 게 요.그런데 이 NPOI 정말 좋아요.

좋은 웹페이지 즐겨찾기