1首先我先改了一下,user-config
<property name="picture-path" value="D:/drd/LoginDemo/work" />2然后 编写view
<?xml version="1.0" encoding="UTF-8"?> <view> <Datasets> <Dataset id="dsTest" wrappedType="Sql" type="Wrapper" autoLoadData="false" listener="ExcelImport_dsTestListener" dataSource="js_kh" keyFields="testcol"> <MasterLink /> <Fields> <Field name="testcol" dataType="string" originField="testcol"> <Properties /> </Field> </Fields> <Parameters /> <Properties /> <sql>select * from kh_test</sql> </Dataset> </Datasets> <Controls> <Control id="tbTest" type="DataTable" dataset="dsTest" /> <Control id="buttonUpload" type="Button" value="上传" width="70"> <Events> <Event name="onClick">if(document.getElementById("dataFile").value){ document.getElementById("excelForm").submit(); }</Event> </Events> </Control> <Control id="subwindowUpload" type="SubWindow" height="100" width="300" /> </Controls> <Properties /> </view> 当然 我这边换成了sqlDataset 并且之前也将datasource配好了 3 将sample下面的fileController copy到我的项目下 4 编写我自己的ExcelControllerimport java.io.File; import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileUploadBase; import com.bstek.dorado.common.UserConfig; import com.bstek.dorado.utils.MetaData; /** * ExcelController */ public class ExcelController extends FileController { public static final String UPLOAD_WORK_PATH = UserConfig.getString("picture-path"); protected File getUploadWorkDirectory(HttpServletRequest request,MetaData parameters) { return new File(UPLOAD_WORK_PATH); } protected String getStoreFileName(HttpServletRequest request, String fileName, MetaData parameters) { int pos = fileName.lastIndexOf("."); String extName; if (pos > 0) { extName = fileName.substring(pos); } else { extName = ""; } String storeFileName=System.currentTimeMillis() + extName; request.setAttribute("fileName", storeFileName); return storeFileName; } protected String getDownLoadFileName(HttpServletRequest request) { return "kh_test.xls"; } protected InputStream getDownloadFileInputStream(HttpServletRequest request) throws Exception { return this.getClass().getResourceAsStream(getDownLoadFileName(request)); } protected void initFileUpload(HttpServletRequest request, FileUploadBase fileUpload) { fileUpload.setHeaderEncoding("UTF-8"); } } 5 新建mapping<mapping prefix=""> <forwards /> <exceptions /> <controllers> <controller name="excel" clazz="ExcelController"> <action name="upload"> <forward name="success" contextRelative="false" path="/success-upload.jsp" /> </action> </controller> </controllers> </mapping>并注册到global
Code:
<units> <unit name="dorado" /> <unit name="login" /> <unit name="excel" /> </units>
结果上传不了
问题
1.上传的模板:如何生成?生成后放哪 我现在自己新建一个xls 是放在/web下的 下载下来0字节
2.download.d的路径 看了sample mapping 好像没有。。
上述编写有问题么
为什么我
Code:
List testList = parse(path); dataset.fromDO(testList); System.out.println(">>>list.size():="+testList.size()); dataset.setPossibleRecordCount(testList.size()); System.out.println(">>>dataset.setPossibleRecordCount:="+dataset.getPossibleRecordCount());
结果
>>>list.size():=2
>>>dataset.setPossibleRecordCount:=2
但是js <script>
var fileName = "<%=request.getAttribute("fileName")%>";
var ds = parent.dsTest;
ds.parameters().setValue("fileName",fileName);
alert(ds.parameters().getValue("fileName"));
ds.flushDataAsync(function(success){
if(success){
alert("成功上传" + ds.getPossibleRecordCount()+"条记录.");
}
});
</script> 却是0记录
但是仅限于保存在客户端的dataset里面,没有和后台真正的交互。
因此需要写入Code:
public List parse(String path) throws Exception { System.out.println("parse_path in parse:"+path); List testList = new ArrayList(); File excelFile = new File(path); System.out.println("excelFile in parse:"+excelFile.getName()); if(excelFile.exists()){ System.out.println(">>>"+excelFile.exists()); Workbook workbook = Workbook.getWorkbook(excelFile); System.out.println(">>>wb:"+workbook); Sheet sheet = workbook.getSheet(0); for (int i = 1; i < sheet.getRows(); i++) { testList.add(getTestcol(sheet.getRow(i))); System.out.println(">>>sheet.getRow:"+sheet.getRow(i)); } System.out.println("sheet.getRows(): "+sheet.getRows()+" sheet.getColumns():"+sheet.getColumns()); // try { Class.forName("com.informix.jdbc.IfxDriver"); String url = "jdbc:informix-sqli://ip:17100/js_kh:informixserver=pnaj2;NEWCODESET=gb2312,8859-1,819"; Connection conn = DriverManager.getConnection(url,"user","pwd"); //Statement stmt = conn.createStatement(); PreparedStatement pstmt = null; for (int i = 1; i < sheet.getRows(); i++) { for (int j = 0; j < sheet.getColumns(); j++) { //获取单元格内容 Cell cell1 = sheet.getCell(j, i); //插入 String sql = "insert into kh_test(testcol) values(?);"; System.out.println(">>>sql:"+sql); System.out.println(">>>cell1.getContents().toString()"+cell1.getContents().toString()); pstmt=(PreparedStatement)conn.prepareStatement(sql); pstmt.setString(1,cell1.getContents().toString()); System.out.println(">>>pstmt"+pstmt); pstmt.executeUpdate(); pstmt.close(); } } conn.close(); }catch(Exception e){ e.printStackTrace(); } workbook.close(); // excelFile.delete(); } return testList; }