当使用POI处理excel的时候,遇到了比较长的数字,虽然excel里面设置该单元格是文本类型的,但是POI的cell的类型就会变成数字类型。

而且无论数字是否小数,使用cell.getNumbericCellValue() 去获取值的时候,会得到一个double,而且当长度大一点的时候会变成科学计数法形式。

那么获取这个单元格的原始的数据,就其实是一个double怎么转换成整数的问题了。

使用DecimalFormat对这个double进行了格式话,随后使用format方法获得的String就是你想要的值了。

  1. DecimalFormat df = new DecimalFormat("0");
  2. String whatYourWant = df.format(cell.getNumericCellValue());
 
 

POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写

再读本篇文章之前,请先看我的前一篇文章,前一篇文章中有重点讲到POI设置EXCEL单元格格式为文本格式,剩下的设置小数、百分比、货币、日期、科学计数法和中文大写这些将在下面一一写出

以下将要介绍的每一种都会用到这三行中的变量

HSSFWorkbook demoWorkBook = new HSSFWorkbook();

HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");

HSSFCell cell = demoSheet.createRow(0).createCell(0);

第一种:日期格式

cell.setCellValue(new Date(2008,5,5));

//set date format

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

HSSFDataFormat format= demoWorkBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("yyyy年m月d日"));

cell.setCellStyle(cellStyle);

第二种:保留两位小数格式

cell.setCellValue(1.2);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));

cell.setCellStyle(cellStyle);

这里与上面有所不同,用的是HSSFDataFormat.getBuiltinFormat()方法,之所以用这个,是因为0.00是Excel内嵌的格式,完整的Excel内嵌格式列表大家可以看这个窗口中的自定义列表:


 这里就不一一列出了

第三种:货币格式

cell.setCellValue(20000);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

HSSFDataFormat format= demoWorkBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("¥#,##0"));

cell.setCellStyle(cellStyle);

第四种:百分比格式

cell.setCellValue(20);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));

cell.setCellStyle(cellStyle);

此种情况跟第二种一样

第五种:中文大写格式

cell.setCellValue(20000);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

HSSFDataFormat format= demoWorkBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));

cell.setCellStyle(cellStyle);

第六种:科学计数法格式

cell.setCellValue(20000);

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

cellStyle.setDataFormat( HSSFDataFormat.getBuiltinFormat("0.00E+00"));

cell.setCellStyle(cellStyle);

此种情况也与第二种情况一样

POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】

实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读取操作的文章,这次要写的就非常重要了,就是开发中经常会用到的POI读取数据库导出EXCEL的操作,所谓导出EXCEL也就是生成带数据内容的新的EXCEL文件

目前的POI版本是3.7

下载地址:http://poi.apache.org/download.html#POI-3.7

必须包只有一个:poi-3.7-20101029.jar

整理思路:1)数据库中的字段对应EXCEL的最顶层一行各个CELL名称[也就是上面图片中序号版本...的]

2)将每个数据一次插入到对应名称CELL的对应记录位置

3)为了方便操作,顶层的cell各个名称可以抽取出来成为一个单独类

具体代码

第一部分:单独的EXCEL表头类

public class Cachetable {

  1. // Fields
  2. private int recnum;
  3. private String devIp;
  4. private String srcaddr;
  5. private String dstaddr;
  6. private String nexthop;
  7. private String input;
  8. private String output;
  9. private String dpkts;
  10. private String doctets;
  11. private String sstart;
  12. private String dstport;
  13. private String prot;
  14. private String tos;
  15. private String srcas;
  16. private String dstas;
  17. private String pduversion;
  18. /** default constructor */
  19. public Cachetable() {
  20. }
  21. /** full constructor */
  22. public Cachetable(int recnum, String devIp, String srcaddr, String dstaddr, String nexthop, String input, String output, String dpkts, String doctets, String sstart, String dstport, String prot, String tos, String srcas, String dstas,String pduversion) {
  23. this.recnum = recnum;
  24. this.devIp = devIp;
  25. this.srcaddr = srcaddr;
  26. this.dstaddr = dstaddr;
  27. this.nexthop = nexthop;
  28. this.input = input;
  29. this.output = output;
  30. this.dpkts = dpkts;
  31. this.doctets = doctets;
  32. this.sstart = sstart;
  33. this.dstport = dstport;
  34. this.prot = prot;
  35. this.tos = tos;
  36. this.srcas = srcas;
  37. this.dstas = dstas;
  38. this.pduversion = pduversion;
  39. }
  40. public int getRecnum() {
  41. return this.recnum;
  42. }
  43. public void setRecnum(int recnum) {
  44. this.recnum= recnum;
  45. }
  46. public String getDevIp() {
  47. return this.devIp;
  48. }
  49. public void setDevIp(String devIp) {
  50. this.devIp = devIp;
  51. }
  52. public String getSrcaddr() {
  53. return this.srcaddr;
  54. }
  55. public void setSrcaddr(String srcaddr) {
  56. this.srcaddr = srcaddr;
  57. }
  58. public String getDstaddr() {
  59. return this.dstaddr;
  60. }
  61. public void setDstaddr(String dstaddr) {
  62. this.dstaddr = dstaddr;
  63. }
  64. public String getNexthop() {
  65. return this.nexthop;
  66. }
  67. public void setNexthop(String nexthop) {
  68. this.nexthop = nexthop;
  69. }
  70. public String getInput() {
  71. return this.input;
  72. }
  73. public void setInput(String input) {
  74. this.input = input;
  75. }
  76. public String getOutput() {
  77. return this.output;
  78. }
  79. public void setOutput(String output) {
  80. this.output = output;
  81. }
  82. public String getDpkts() {
  83. return this.dpkts;
  84. }
  85. public void setDpkts(String dpkts) {
  86. this.dpkts = dpkts;
  87. }
  88. public String getDoctets() {
  89. return this.doctets;
  90. }
  91. public void setDoctets(String doctets) {
  92. this.doctets = doctets;
  93. }
  94. public String getSstart() {
  95. return this.sstart;
  96. }
  97. public void setSstart(String sstart) {
  98. this.sstart = sstart;
  99. }
  100. public String getDstport() {
  101. return this.dstport;
  102. }
  103. public void setDstport(String dstport) {
  104. this.dstport = dstport;
  105. }
  106. public String getProt() {
  107. return this.prot;
  108. }
  109. public void setProt(String prot) {
  110. this.prot = prot;
  111. }
  112. public String getTos() {
  113. return this.tos;
  114. }
  115. public void setTos(String tos) {
  116. this.tos = tos;
  117. }
  118. public String getSrcas() {
  119. return this.srcas;
  120. }
  121. public void setSrcas(String srcas) {
  122. this.srcas = srcas;
  123. }
  124. public String getDstas() {
  125. return this.dstas;
  126. }
  127. public void setDstas(String dstas) {
  128. this.dstas = dstas;
  129. }
  130. public String getPduversion() {
  131. return this.pduversion;
  132. }
  133. public void setPduversion(String pduversion) {
  134. this.pduversion = pduversion;
  135. }

第二部分:具体的POI操作生成EXCEL类

【我这里只是个示例,没连数据库,直接运行即可,如果想连,稍微变动一点即可】

  1. package com.zkyy.flow.excel;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import javax.swing.JOptionPane;
  9. import org.apache.poi.hssf.usermodel.HSSFCell;
  10. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  11. import org.apache.poi.hssf.usermodel.HSSFDataFormat;
  12. import org.apache.poi.hssf.usermodel.HSSFFooter;
  13. import org.apache.poi.hssf.usermodel.HSSFHeader;
  14. import org.apache.poi.hssf.usermodel.HSSFRow;
  15. import org.apache.poi.hssf.usermodel.HSSFSheet;
  16. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  17. import com.kk.flow.webapp.util.Cachetable;
  18. public class ExcelOut {
  19. //表头
  20. public static final String[] tableHeader = {"序号","版本","接收时刻","设备","入接口","出接口",
  21. "源IP","目的IP","下一跳","协议","端口","对端端口","TOS","源AS","目的AS","TCP_FLAG","pad1","pad2"};
  22. //创建工作本   TOS
  23. public static HSSFWorkbook demoWorkBook = new HSSFWorkbook();
  24. //创建表
  25. public static HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");
  26. //表头的单元格个数目
  27. public static final short cellNumber = (short)tableHeader.length;
  28. //数据库表的列数
  29. public static final int columNumber = 1;
  30. /**
  31. * 创建表头
  32. * @return
  33. */
  34. public static void createTableHeader()
  35. {
  36. HSSFHeader header = demoSheet.getHeader();
  37. header.setCenter("世界五百强企业名次表");
  38. HSSFRow headerRow = demoSheet.createRow((short) 0);
  39. for(int i = 0;i < cellNumber;i++)
  40. {
  41. HSSFCell headerCell = headerRow.createCell((short) i);
  42. headerCell.setCellType(HSSFCell.CELL_TYPE_STRING);
  43. headerCell.setCellValue(tableHeader[i]);
  44. }
  45. }
  46. /**
  47. * 创建行
  48. * @param cells
  49. * @param rowIndex
  50. */
  51. public static void createTableRow(List<String> cells,short rowIndex)
  52. {
  53. //创建第rowIndex行
  54. HSSFRow row = demoSheet.createRow((short) rowIndex);
  55. for(int i = 0;i < cells.size();i++)
  56. {
  57. //创建第i个单元格
  58. HSSFCell cell = row.createCell(i);
  59. if(cell.getCellType()!=1){
  60. cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  61. }
  62. //新增的四句话,设置CELL格式为文本格式
  63. HSSFCellStyle cellStyle2 = demoWorkBook.createCellStyle();
  64. HSSFDataFormat format = demoWorkBook.createDataFormat();
  65. cellStyle2.setDataFormat(format.getFormat("@"));
  66. cell.setCellStyle(cellStyle2);
  67. cell.setCellValue(cells.get(i));
  68. cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  69. }
  70. }
  71. /**
  72. * USE:用于获取Cachetable的数据。。。假数据。到时候:你连接数据库的到List<Cachetable>的数据就行了。 共生成
  73. * 100条数据.相当于100行
  74. *
  75. * @return
  76. */
  77. public List<Cachetable> getDate() {
  78. List<Cachetable> cacheList = new ArrayList<Cachetable>();
  79. for (int j = 0; j < 300; j++) {
  80. Cachetable tb = new Cachetable();
  81. tb.setRecnum(j + 1);
  82. tb.setDevIp("JavaCrazyer");
  83. tb.setSrcaddr("北京");
  84. tb.setDstaddr("xxx");
  85. tb.setNexthop("yy");
  86. tb.setInput("123");
  87. tb.setOutput("127.0.0.1");
  88. tb.setDpkts("what are you doing?");
  89. tb.setDoctets("who are you?");
  90. tb.setSstart("Oh  sure!");
  91. tb.setProt("One");
  92. tb.setTos("two");
  93. tb.setSrcas("three");
  94. tb.setDstas("four");
  95. tb.setPduversion("不知道");
  96. cacheList.add(tb);
  97. }
  98. return cacheList;
  99. }
  100. /**
  101. * 创建整个Excel表
  102. * @throws SQLException
  103. *
  104. */
  105. public  void createExcelSheet() throws SQLException{
  106. createTableHeader();
  107. int rowIndex=1;
  108. List<Cachetable> list=getDate();
  109. for(int j=0;j<list.size();j++){
  110. List<String> listRead=new ArrayList<String>();
  111. for(int i=1;i<=columNumber;i++){
  112. listRead.add(list.get(i).getDevIp());
  113. listRead.add(list.get(i).getSrcaddr());
  114. listRead.add(list.get(i).getDstaddr());
  115. listRead.add(list.get(i).getNexthop());
  116. listRead.add(list.get(i).getInput());
  117. listRead.add(list.get(i).getOutput());
  118. listRead.add(list.get(i).getDpkts());
  119. listRead.add(list.get(i).getDoctets());
  120. listRead.add(list.get(i).getSstart());
  121. listRead.add(list.get(i).getProt());
  122. listRead.add(list.get(i).getTos());
  123. listRead.add(list.get(i).getSrcas());
  124. listRead.add(list.get(i).getDstas());
  125. listRead.add(list.get(i).getPduversion());
  126. listRead.add(rowIndex+"");
  127. }
  128. createTableRow(listRead,(short)rowIndex);
  129. rowIndex++;
  130. }
  131. }
  132. /**
  133. * 导出表格
  134. * @param sheet
  135. * @param os
  136. * @throws IOException
  137. */
  138. public void exportExcel(HSSFSheet sheet,OutputStream os) throws IOException
  139. {
  140. sheet.setGridsPrinted(true);
  141. HSSFFooter footer = sheet.getFooter();
  142. footer.setRight("Page " + HSSFFooter.page() + " of " +
  143. HSSFFooter.numPages());
  144. demoWorkBook.write(os);
  145. }
  146. public static void main(String[] args) {
  147. String fileName = "f:\\世界五百强企业名次表.xls";
  148. FileOutputStream fos = null;
  149. try {
  150. ExcelOut pd = new ExcelOut();
  151. pd.createExcelSheet();
  152. fos = new FileOutputStream(fileName);
  153. pd.exportExcel(demoSheet,fos);
  154. JOptionPane.showMessageDialog(null, "表格已成功导出到 : "+fileName);
  155. } catch (Exception e) {
  156. JOptionPane.showMessageDialog(null, "表格导出出错,错误信息 :"+e+"\n错误原因可能是表格已经打开。");
  157. e.printStackTrace();
  158. } finally {
  159. try {
  160. fos.close();
  161. } catch (Exception e) {
  162. e.printStackTrace();
  163. }
  164. }
  165. }
  166. }

说明:

1)有关数据库连接,如果操作到数据库的话,在遍历数据库时用getDate这个方法遍历就可以啦,那么插入的数据就不是定值了,而是数据库中的值哦,具体操作数据库的步骤,我不用说,你懂得

2)有关涉及更改EXCEL的CELL格式为字符串,如图一般情况下大家导出的EXCEL表格CELL格式通常是常规的


   这个问题,估计已经不止一两个朋友在网上问过,我至今没有看到一个满意的答案,通常大家都是想到既然是设置CELL格式肯定是通过cell.setCellType(HSSFCell.CELL_TYPE_STRING)然后插入数据再导出,诚然这种想法是对的,实际上不能起到任何作用,因为这个方法就是EXCEL默认的格式,写不写都一样(好多同学都不知道吧),再写出我的解决方案之前请大家参考下一段文字

第一段:Excel的单元格格式 
图中的数据有数值、货币、时间、日期、文本等格式。这些数据格式在POI中的HSSFDataFormat类里都有相应的定义。 
HSSFDataFormat是HSSF子项目里面定义的一个类。类HSSFDataFormat允许用户新建数据格式类型。HSSFDataFormat类包含静态方法static Java.lang.String getBuiltinFormat(short index),它可以根据编号返回内置数据类型。另外static short getBuiltinFormat(java.lang.String format)方法则可以根据数据类型返回其编号,static java.util.List getBuiltinFormats()可以返回整个内置的数据格式列表。 
在HSSFDataFormat里一共定义了49种内置的数据格式,如下面所示。

HSSFDataFormat的数据格式

内置数据类型 
编号

"General" 
0

"0" 
1

"0.00" 
2

"#,##0" 
3

"#,##0.00" 
4

"($#,##0_);($#,##0)" 
5

"($#,##0_);[Red]($#,##0)" 
6

"($#,##0.00);($#,##0.00)" 
7

"($#,##0.00_);[Red]($#,##0.00)" 
8

"0%" 
9

"0.00%" 
0xa

"0.00E+00" 
0xb

"# ?/?" 
0xc

"# ??/??" 
0xd

"m/d/yy" 
0xe

"d-mmm-yy" 
0xf

"d-mmm" 
0x10

"mmm-yy" 
0x11

"h:mm AM/PM" 
0x12

"h:mm:ss AM/PM" 
0x13

"h:mm" 
0x14

"h:mm:ss" 
0x15

"m/d/yy h:mm" 
0x16

保留为过国际化用 
0x17 - 0x24

"(#,##0_);(#,##0)" 
0x25

"(#,##0_);[Red](#,##0)" 
0x26

"(#,##0.00_);(#,##0.00)" 
0x27

"(#,##0.00_);[Red](#,##0.00)" 
0x28

"_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)" 
0x29

"_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)" 
0x2a

"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)" 
0x2b

"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)" 
0x2c

"mm:ss" 
0x2d

"[h]:mm:ss" 
0x2e

"mm:ss.0" 
0x2f

"##0.0E+0" 
0x30

"@" - This is text format 
0x31

在上面表中,字符串类型所对应的是数据格式为"@"(最后一行),也就是HSSFDataFormat中定义的值为0x31(49)的那行。Date类型的值的范围是0xe-0x11,本例子中的Date格式为""m/d/yy"",在HSSFDataFormat定义的值为0xe(14)。

第二段:POI中Excel文件Cell的类型 
在读取每一个Cell的值的时候,通过getCellType方法获得当前Cell的类型,在Excel中Cell有6种类型,如下面所示。

Cell的类型

CellType 
说明

CELL_TYPE_BLANK 
空值

CELL_TYPE_BOOLEAN 
布尔型

CELL_TYPE_ERROR 
错误

CELL_TYPE_FORMULA 
公式型

CELL_TYPE_STRING 
字符串型

CELL_TYPE_NUMERIC 
数值型

一般都采用CELL_TYPE_STRING和CELL_TYPE_NUMERIC类型,因为在Excel文件中只有字符串和数字。如果Cell的Type为CELL_TYPE_NUMERIC时,还需要进一步判断该Cell的数据格式,因为它有可能是Date类型,在Excel中的Date类型也是以Double类型的数字存储的。Excel中的Date表示当前时间与1900年1月1日相隔的天数,所以需要调用HSSFDateUtil的isCellDateFormatted方法,判断该Cell的数据格式是否是Excel Date类型。如果是,则调用getDateCellValue方法,返回一个Java类型的Date。

好了读完上面两段文字我想大家关于CELL类型和格式应该清楚了,更应该清楚的是到底怎么才能将‘设置单元格格式’改成文本然后再导出

解决方案:就是上面代码中的ExcelOut类里面createTableRow方法中的一段代码

HSSFCellStyle cellStyle2 = demoWorkBook.createCellStyle();

HSSFDataFormat format = demoWorkBook.createDataFormat();

cellStyle2.setDataFormat(format.getFormat("@"));

cell.setCellStyle(cellStyle2);

看最终导出效果图吧,点击任何一个CELL右键设置单元格格式

3)  JOptionPane.showMessageDialog(null, "表格已成功导出到 : "+fileName);这句话有点意思


 看到没这就是javax.swing.JOptionPane类的有关消息输出的好处,很方便使用

PS:更多的关于POI设置EXCEL单元格格式为数字、百分比、货币、日期等等格式的,请看我接下来要写的文章

 
 

java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式和其他常见Excel中数据转换问题的更多相关文章

  1. 解决HTML导出Excel表数字变成科学计数法

    - js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转 ...

  2. mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法

    Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它 ...

  3. 导出csv用excel打开后数字不用科学计数法显示(0123456显示123456)

    从这儿抄过来的: http://zhejiangyinghui.iteye.com/blog/1149526 最近写了一个生成csv的程序,生成的csv其中有一列数字长度为13位,csv中查看没有问题 ...

  4. SQL Server 从Excel导入到数据库操作遇到的科学计数法问题

    问题描述 今天在做从Excel导入数据到SQL Server 中将数据更新到表中,可惜就这一个简单的操作中出现了一点小插曲,就在我根据Excel中的编号关联表编号以此更新姓名字段时出现转换错误问题.如 ...

  5. 解决navicat 导出excel数字为科学计数法问题

    1.原因分析      用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式.     其实这个问题跟用什么语言导出csv文件没有关 ...

  6. Laravel 使用 maatwebsite/excel 时长数字出现科学计数法的解决办法

    在使用 maatwebsite/excel 包导出Excel的时候,有的单元格里会存放手机号等一大串的数字,这一串数字会被Excel软件处理为科学计数法,在后续处理数据的时候会产生不小的麻烦,一个个去 ...

  7. 防止excel数字变成科学计数法

    在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel的格式为文本格式. 我试用过第一种确实可以显示,但是有个“'”号在那里感觉确实不是很好,虽然听说不影响,但 ...

  8. jsp 页面导出excel时字符串数字变成科学计数法的解决方法

    web导出excel数据格式化 原文地址:http://www.cnblogs.com/myaspnet/archive/2011/05/06/2038490.html   当我们把web页面上的数据 ...

  9. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

随机推荐

  1. 关于Unity中的帧动画组件的编写

    一.帧动画 1: 美术准备好一个连续动作的离散图片;2: 程序在准确的时间来切换这个图片;3: 优点: 简单,速度快; 缺点:资源占用相对过大; 二.frame_anim组件编写 1: 代码里面强制要 ...

  2. AMD和RequireJS初识----优化Web应用前端(按需动态加载JS)

    RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量.它还同时可以和其他的框架协同工作,使用Re ...

  3. Floyd算法思想

    关键词:代数.图论.矩阵.松弛技术.动态规划 Floyd算法是一个经典的动态规划算法.用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径.从动态规划的角度看问题,我们需要为这个目标重新 ...

  4. R语言低级绘图函数-abline

    abline 函数的作用是在一张图表上添加直线, 可以是一条斜线,通过x或y轴的交点和斜率来确定位置:也可以是一条水平或者垂直的线,只需要指定与x轴或y轴交点的位置就可以了 常见用法: 1)添加直线 ...

  5. Js Object转化为json,json转Object

    var obj={x:10,y:50};var t= JSON.stringify(obj);console.log(typeof t);var gg= JSON.parse(t);console.l ...

  6. 实现QQ第三方登录教程(php)

    参看地址:http://www.bcty365.com/content-10-2945-1.html

  7. PHP实现MySQL数据导出为EXCEL(CSV格式)

    <?php // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/vnd.ms-excel'); header(' ...

  8. GC浅析之三-性能调优经验总结

    性能调优经验总结 问题的出现: 在日常环境下,以某server 为例,该机器的每秒的访问量均值在368左右,最大访问量在913.对外提供服务的表现为每两三个小时就有秒级别的时间客户端请求超时,在访问量 ...

  9. MathType中常见的两种符号的运用

    想要让公式编辑得快速又高效,MathType数学公式编辑器这个神助攻是少不了的.MathType是一款专用的数学公式编辑器,用它来编辑公式非常方便实用,并且排版也非常简单.下面介绍两种常见符号的应用. ...

  10. Word公式装逼技巧,你绝对不会!

    Word论文排版是非常有技术含量的.只是纯文本格式时都有很多技巧,累倒一群人,更不用说还加上有数学公式了.有数学公式也就算了,问题是公式排版更是难上加难.想要在人前装逼一把?没有这些技巧你是绝对不行的 ...