├── README.md
├── excel2db-browse
├── .gitignore
├── pom.xml
├── scripts
│ └── x-java-startup.bat
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── excel2db
│ │ └── browse
│ │ ├── NDBBrowseFrame.java
│ │ └── NDBTableModel.java
│ └── resources
│ ├── log4j.properties
│ └── package.xml
├── excel2db-read
├── .gitignore
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── excel2db
│ │ │ │ └── read
│ │ │ │ ├── DBFile.java
│ │ │ │ ├── Header.java
│ │ │ │ ├── NdbDataManager.java
│ │ │ │ └── util
│ │ │ │ ├── BeanUtil.java
│ │ │ │ ├── Constants.java
│ │ │ │ ├── SuffixUtil.java
│ │ │ │ └── TypeEnum.java
│ │ └── resources
│ │ │ └── log4j.properties
│ └── test
│ │ └── java
│ │ └── test
│ │ ├── ArrayTestData.java
│ │ ├── ArrayTestDataManager.java
│ │ ├── GeneralData.java
│ │ ├── GeneralDataManager.java
│ │ └── ReadMain.java
└── suffix.properties
├── excel2db-write
├── .gitignore
├── config.properties
├── pom.xml
├── scripts
│ ├── x-csharp-startup.bat
│ └── x-java-startup.bat
└── src
│ └── main
│ ├── java
│ └── org
│ │ └── excel2db
│ │ └── write
│ │ ├── WriteMain.java
│ │ ├── genClass
│ │ ├── AbstractGenerator.java
│ │ ├── Config.java
│ │ ├── GeneratorFactory.java
│ │ ├── IGenerator.java
│ │ ├── SheetInfo.java
│ │ ├── generator
│ │ │ ├── CSharpGenerator.java
│ │ │ └── JavaGenerator.java
│ │ └── sign
│ │ │ ├── CSharpSign.java
│ │ │ └── JavaSign.java
│ │ ├── manager
│ │ ├── ExcelParse.java
│ │ ├── GeneratorBeanClass.java
│ │ └── NDBGenerator.java
│ │ └── util
│ │ ├── ConfigUtil.java
│ │ ├── Constants.java
│ │ ├── EndfixEnum.java
│ │ ├── ExcelColumn.java
│ │ ├── FileUtil.java
│ │ └── TypeEnum.java
│ └── resources
│ ├── log4j.properties
│ └── package.xml
├── pom.xml
├── src
├── main
│ └── java
│ │ └── com
│ │ └── excel2db
│ │ └── App.java
└── test
│ └── java
│ └── com
│ └── excel2db
│ └── AppTest.java
├── test.xls
└── 二进制格式文档
/README.md:
--------------------------------------------------------------------------------
1 | Excel转二进制工具
2 | ===
3 |
4 | 目的:
5 | ---
6 | 游戏开放中有原型数据,而原型数据经常都是通过excel进行编写,关于程序如何去读取excel中的数据,方法有很多种,比如:
7 | 1.将excel导入mysql中,然后由程序去读取数据库,但是客户端无法读取数据库,经常还要重新给客户端导出xml,比较麻烦
8 | 2.客户端服务器直接读取excel,excel是比较大的,不适合存放在客户端
9 |
10 | excel2db-write
11 | ---
12 | 将excel转成ndb文件(二进制文件),格式参考:二进制格式文档
13 | 读取excel,根据定义好的格式写入ndb文件中,同时根据指定不同的语言生成各自的bean类
14 | 使用:
15 | pom.xml打包,将target中的zip包拷贝出来,根据附录1中的参数说明填写参数,提供了测试的excel见附录2
16 |
17 | excel2db-read
18 | ---
19 | 提供java版本的解析ndb文件,并将结果映射到bean中
20 |
21 | excel2db-browse
22 | ---
23 | 提供查看ndb文件的客户端,将ndb文件拖入到窗口中查看
24 |
25 | 附录
26 | ---
27 | 1.bat中参数说明:
28 | language 指定语言支持java,csharp
29 | beanRoot 指定bean的生成路径,一般都是指定到我们项目中
30 | packageRoot 指定bean的包路径
31 | excelPath 指定excel的存放路径
32 | ndbPath 指定ndb的存放路径
33 |
34 | 2.test.xls 指定了excel的格式,兼容excel2003和2007
35 | 第三行指定类型分别有:int,float,long,string,double,ints,floats,longs,strings,doubles
36 |
--------------------------------------------------------------------------------
/excel2db-browse/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /log
--------------------------------------------------------------------------------
/excel2db-browse/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.excel2db
8 | excel2db
9 | 0.0.1-SNAPSHOT
10 |
11 | excel2db-browse
12 | excel2db-browse
13 | http://maven.apache.org
14 |
15 | UTF-8
16 |
17 |
18 |
19 |
20 |
21 | org.apache.maven.plugins
22 | maven-jar-plugin
23 | 2.3.2
24 |
25 |
26 | false
27 |
28 | true
29 | lib/
30 | org.excel2db.browse.NDBBrowseFrame
31 |
32 |
33 |
34 |
35 |
36 |
37 | org.apache.maven.plugins
38 | maven-assembly-plugin
39 | 2.4
40 |
41 |
42 | src/main/resources/package.xml
43 |
44 |
45 |
46 |
47 | make-assembly
48 | package
49 |
50 | single
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | com.excel2db
61 | excel2db-read
62 | 0.0.1-SNAPSHOT
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/excel2db-browse/scripts/x-java-startup.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ksfzhaohui/excel2db/781edd6d7ff172501f67355bcb491b2f6e01806a/excel2db-browse/scripts/x-java-startup.bat
--------------------------------------------------------------------------------
/excel2db-browse/src/main/java/org/excel2db/browse/NDBBrowseFrame.java:
--------------------------------------------------------------------------------
1 | package org.excel2db.browse;
2 |
3 | import java.awt.BorderLayout;
4 | import java.awt.datatransfer.DataFlavor;
5 | import java.awt.dnd.DnDConstants;
6 | import java.awt.dnd.DropTarget;
7 | import java.awt.dnd.DropTargetAdapter;
8 | import java.awt.dnd.DropTargetDropEvent;
9 | import java.io.File;
10 | import java.lang.reflect.Array;
11 | import java.util.List;
12 | import java.util.Map;
13 |
14 | import javax.swing.JFrame;
15 | import javax.swing.JScrollPane;
16 | import javax.swing.JTable;
17 | import javax.swing.ListSelectionModel;
18 |
19 | import org.apache.log4j.Logger;
20 | import org.excel2db.read.DBFile;
21 | import org.excel2db.read.util.Constants;
22 |
23 | /**
24 | * 浏览ndb文件的窗口
25 | *
26 | * @author zhaohui
27 | *
28 | */
29 | public class NDBBrowseFrame extends JFrame {
30 |
31 | private final static Logger logger = Logger.getLogger(NDBBrowseFrame.class);
32 | private static final long serialVersionUID = 1L;
33 |
34 | private static final int frame_width = 800;
35 | private static final int frame_height = 500;
36 | private JTable table;
37 | private JScrollPane scrollPane;
38 |
39 | public NDBBrowseFrame() {
40 | table = new JTable();
41 | table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
42 | scrollPane = new JScrollPane(table);
43 | this.add(scrollPane, BorderLayout.CENTER);
44 |
45 | handlerDrag();
46 | this.setTitle("NDB Browser");
47 | this.setSize(frame_width, frame_height);
48 | this.setResizable(false);
49 | this.setVisible(true);
50 | this.setLocationRelativeTo(null);
51 | this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
52 | }
53 |
54 | /**
55 | * 定义的拖拽方法
56 | */
57 | private void handlerDrag() {
58 | new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE,
59 | new DropTargetAdapter() {
60 | @Override
61 | public void drop(DropTargetDropEvent dtde) {
62 | try {
63 | if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
64 | dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
65 | @SuppressWarnings("unchecked")
66 | List list = (List) (dtde
67 | .getTransferable()
68 | .getTransferData(DataFlavor.javaFileListFlavor));
69 |
70 | browseNDB(list.get(0));
71 | dtde.dropComplete(true);
72 | } else {
73 | dtde.rejectDrop();
74 | }
75 | } catch (Exception e) {
76 | logger.error("", e);
77 | }
78 | }
79 | });
80 | }
81 |
82 | /**
83 | * 浏览ndb中的数据
84 | *
85 | * @param file
86 | * 拖进来的ndb文件
87 | */
88 | private void browseNDB(File file) {
89 | DBFile dbFile = new DBFile();
90 | dbFile.init(file.getAbsolutePath());
91 |
92 | List