Rumah > Java > javaTutorial > Java实现数据库中查询出的数据转存成excel表

Java实现数据库中查询出的数据转存成excel表

(*-*)浩
Lepaskan: 2019-09-30 16:04:57
ke hadapan
3641 orang telah melayarinya

看了很多文章乱糟糟的,自己写了个简单暴力的一眼就懂,没有那么多花里胡哨,表格样式可以通过代码定义,我嫌麻烦

Java实现数据库中查询出的数据转存成excel表

注意日期格式如果是以String类型的方式存到数据库的导出时要转换一次,直接导出格式不对

因为导出excel表格用的是get方式传参,所以如果需要对导出的数据用中文模糊查询,此时 用get传参会出现中文乱码

解决办法:

前端对需要传的中文参数进行一次编码 URLEncoder.encode(传参,“utf-8”);

后台需要再次解码:URLDecoder.decode(接收的参数,“utf-8”);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

@RequestMapping(value = "outPutExcel", method = RequestMethod.GET)

@ResponseBody

public void outPutExcel( HttpServletResponse response,String officeid,

String sonid,String nameorphone,String beginTime, String endTime,String option) {

        String nString = "";

        try {

            if (nameorphone != null && nameorphone != "") {

            //对前端传的参数解码

                 nString = URLDecoder.decode(nameorphone,"UTF-8");

            }

        } catch (UnsupportedEncodingException e2) {

            // TODO Auto-generated catch block

            e2.printStackTrace();

        }

        response.reset();

        //设置浏览器下载的格式,并以当前时间的毫秒数命名

        response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls");

        response.setContentType("application/msexcel");

        List<PurchaseSum> list = purchaseService.selectPCSum(officeid, sonid, nString, beginTime, endTime, option);

        if (list == null && list.isEmpty()) {

            throw new NullPointerException("导出数据源为空");

        }

        HSSFWorkbook wb = new HSSFWorkbook();

        HSSFSheet sheet = wb.createSheet("sheet0");

        HSSFRow rows;

        HSSFCell cells;

        //设置表格第一行的列名

        // 获得表格第一行

        rows = sheet.createRow(0);

        // 根据需要给第一行每一列设置标题

        cells = rows.createCell(0);

        cells.setCellValue("客户姓名");

 

        cells = rows.createCell(1);

        cells.setCellValue("客户电话");

 

        cells = rows.createCell(2);

        cells.setCellValue("下单日期");

 

        cells = rows.createCell(3);

        cells.setCellValue("订单号");

 

        cells = rows.createCell(4);

        cells.setCellValue("所属分公司");

 

        cells = rows.createCell(5);

        cells.setCellValue("签单人");

 

        cells = rows.createCell(6);

        cells.setCellValue("品名");

 

        cells = rows.createCell(7);

        cells.setCellValue("型号");

 

        cells = rows.createCell(8);

        cells.setCellValue("颜色");

 

        cells = rows.createCell(9);

        cells.setCellValue("尺寸");

 

        cells = rows.createCell(10);

        cells.setCellValue("材质");

 

        cells = rows.createCell(11);

        cells.setCellValue("已采购数量(件)");

         

        cells = rows.createCell(12);

        cells.setCellValue("采购单价");

         

        cells = rows.createCell(13);

        cells.setCellValue("采购总价");

         

        cells = rows.createCell(14);

        cells.setCellValue("已出库(件)");

        //循环数据库查出来的数据集,对应每一列赋值

        //此处list.size()本不应该-1,因为同事在list集合里追加了另一条数据,导致报错故将其去除

        for (int i = 0; i < list.size()-1; i++) {

            rows = sheet.createRow(i + 1);

             

            cells = rows.createCell(0);

            cells.setCellValue(list.get(i).getCustomerName());

 

            cells = rows.createCell(1);

            cells.setCellValue(list.get(i).getPhone());

            //对日期格式进行转换

            cells = rows.createCell(2);

            String dateString  = list.get(i).getPlaceOrderTime().toString();

            Date date = null;

            try {

                date = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(dateString);

            } catch (ParseException e1) {

                // TODO Auto-generated catch block

                e1.printStackTrace();

            }

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            cells.setCellValue(sdf.format(date));

 

            cells = rows.createCell(3);

            cells.setCellValue(list.get(i).getOrderNumber());

 

            cells = rows.createCell(4);

            cells.setCellValue(list.get(i).getOfficeName());

 

            cells = rows.createCell(5);

            cells.setCellValue(list.get(i).getUsername());

 

            cells = rows.createCell(6);

            cells.setCellValue(list.get(i).getProductName());

 

            cells = rows.createCell(7);

            cells.setCellValue(list.get(i).getType());

 

            cells = rows.createCell(8);

            cells.setCellValue(list.get(i).getColor());

 

            cells = rows.createCell(9);

            cells.setCellValue(list.get(i).getSize());

 

            cells = rows.createCell(10);

            cells.setCellValue(list.get(i).getTexture());

 

            cells = rows.createCell(11);

            cells.setCellValue(list.get(i).getPurchasedNumber());

 

            cells = rows.createCell(12);

            cells.setCellValue(list.get(i).getPurchaseprice());

             

            cells = rows.createCell(13);

            cells.setCellValue(list.get(i).getPurchasePriceSun());

             

            cells = rows.createCell(14);

            cells.setCellValue(list.get(i).getOutlibraryNumber());

             

        }

        try {

            OutputStream oStream = response.getOutputStream();

            wb.write(oStream);

            oStream.flush();

        } catch (FileNotFoundException e1) {

            // TODO Auto-generated catch block

            e1.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

 

    }

Salin selepas log masuk

Atas ialah kandungan terperinci Java实现数据库中查询出的数据转存成excel表. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan