由于在工作中要把到处来SQL文件放在EXCEL中,然后再有发布组进行发布维护,于是就写了这个自动倒DB的.
package test1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
public class ExcelWriteTest {
public static void main(String[] args) throws Exception{
//创建一个可写入的流程
jxl.write.WritableWorkbook book = Workbook.createWorkbook(new File("E:/test.xls"));
WritableSheet sheet = book.createSheet("DB提交清单", 0);
//读取DB文件内容
String pathName = "E:/工作/2013/11月/DB/中国移动移动商城省级系统改造/DB/1.sql";
//需求名称
String xqName ="移动商城";
//备注
String reMark = "";
File file = new File(pathName);
FileInputStream fils = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fils,"GBK");
BufferedReader reader = new BufferedReader(isr);
String str = null;
java.util.List<String> list = new java.util.ArrayList<String>();
while((str=reader.readLine())!=null){
list.add(str);
}
reader.close();
String oper = list.get(0);
String oper1 = oper.substring(12);
String[] opers = oper1.split("\\(");
//表名称
String tableName = opers[0];
//数据库用户
int nl = opers[0].indexOf(".");
String dataBaseName = opers[0].substring(0, nl);
String[] excel = new String[0];
if(list.size()%3 == 0){
excel = new String[list.size()/3];//注意得到list的行数
}
else{
throw new Exception("文件有问题,不满足要求");
}
for(int j=0;j<excel.length;j++){
excel[j] =list.get(3*j)+list.get(3*j+1);
}
String strUnit = null;
for(int m=0;m<7;m++){//m列
for(int n=1;n<=excel.length;n++){
if(0 == m){
strUnit = xqName;
}
else if(1 == m){
strUnit = "DML";
}
else if(2 == m){
strUnit = "CRM";
}
else if(3 == m){
strUnit = tableName;
}
else if(4 == m){
strUnit = dataBaseName;
}
else if(5 == m){
strUnit = excel[n-1];
}
else{
strUnit = reMark;
}
Label label = new Label(m,n,strUnit);
sheet.addCell(label);
}
}
book.write();
book.close();
}
}
核心就是excel处理类和文件读取,其中这个里面涉及到了夺取多行的处理!!