顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2007年7月19日 星期四

如何使用Java與Delphi控制Microsoft Excel之object

如何使用JavaDelphi控制Microsoft Excelobject


讀取Excel: Java
































項目



控制內容



Syntax



1



使用之外部API



jxl.*



2



讀取xls檔案



Workbook workBook = Workbook.getWorkbook(new File("c:/Abnormal_Code.xls"));



3



讀取第一個工作表



Sheet sheet = workBook.getSheet(0);



4



取得指定工作表之Column數量



sheet.getColumns()



5



取得指定工作表之Row數量



sheet.getRows()



6



取得指定Cell之內容



sheet.getCell(column, row).getContents()




讀取Excel: Delphi
































項目



控制內容



Syntax



1



使用之外部API



ComObj



2



讀取xls檔案



Var


excel_sheet: Variant;



excel_sheet := CreateOleOBject('Excel.Application');


excel_sheet.Workbooks.Open('c:\200511615141.xls');



3



讀取第一個工作表



excel_sheet.WorkBooks[1].WorkSheets[1]



4



取得指定工作表之Column數量





5



取得指定工作表之Row數量





6



取得指定Cell之內容



excel_sheet.WorkBooks[1].WorkSheets[3].Cells[1,1]




寫入Excel: Java
























































項目



控制內容



Syntax



1



建立一個空的Excel檔案



WritableWorkbook writableWorkBook = Workbook.createWorkbook(new File("c:/Abnormal_Code_Ouput.xls"));



2



建立第一個工作表,並命名為Data



WritableSheet writableSheet = writableWorkBook.createSheet("Data", 1);



3



建立Cell之格式



WritableCellFormat writableCellFormat = new WritableCellFormat();



4



設定文字置中



//文字置中


writableCellFormat.setAlignment(jxl.format.Alignment.CENTRE);



5



設定Cell之背景顏色



writableCellFormat.setBackground(jxl.format.Colour.GRAY_25);



6



設定Cell之邊框



writableCellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);



7



建立一個Cell,並使用上述所建立之格式



Label label = new Label(column, row, "Test", writableCellFormat);


writableSheet.addCell(label);//加入工作表中



8



設定Cell寬度



writableSheet.setColumnView(column, cellWidth);


ex: writableSheet.setColumnView(0, 5);



9



設定Cell高度



writableSheet.setRowView(row, cellHeight);


ex: writableSheet.setRowView(0, 10);



10



設定整個Cell之格式



writableCell.setCellFormat(writableCellFormat);



11



合併儲存格



ritableSheet.mergeCells(start_column, start_row, end_column, end_row)


writableSheet.mergeCells(2, 0, 3, 0);



12



將建立之物件寫入Excel工作簿中,並關閉



writableWorkBook.write();


writableWorkBook.close();




寫入Excel: Delphi












































項目



控制內容



Syntax



1



建立一個空的Excel檔案



excel := CreateOleOBject('Excel.Application'); excel.Workbooks.Open(targetFileName);



2



建立第一個工作表,並命名為Data



excel.Workbooks[1].Worksheets.Add;


excel.Workbooks[1].sheets[1].Name := 'Data';



3



設定Cell之背景顏色



excel.Cells[1,1].Interior.ColorIndex := 6;



4



設定Cell之邊框



excel.ActiveSheet.Range['A1:B2'].Borders[n].Weight := 3;


n1- 2- 3- 4- 5-( \ ) 6-( / )



excel.WorkBooks[1].WorkSheets[1].Cells[1, 1].Borders[6].LineStyle:= 0;



5



設定Cell寬度



excel.ActiveSheet.Columns[1].ColumnsWidth := 5;(單位:字元個數)



6



設定Cell高度



excel.ActiveSheet.Rows[2].RowHeight := 1/0.035;(單位:磅)(10.035厘米)



7



設定整個Cell之格式



excel.Cells[1, 1].RowHeight := 20;



8



合併儲存格



excel.Range['A1','D1'].Merge(True);



9



將建立之物件寫入Excel工作簿中,並關閉



excel.WorkBooks[1].Save;


excel.WorkBooks.Close;


excel.Quit;



2007年7月18日 星期三

如何使用Java與Delphi控制XML檔案

讀取XML: Java

































項目



控制內容



Syntax



1



使用之外部API



org.jdom.*, javax.xml.rpc.*



2



讀取XML檔案



SAXBuilder builder = new SAXBuilder(false);


Document document = builder.build(file);



3



取得XML檔案之根節點



Element rootElement = document.getRootElement();



4



取得根節點有多少子節點



List elementList = rootElement.getChildren();



5



取得根節點之屬性



List attributes = rootElement.getAttributes();



6



取得第n個屬性之屬性名稱及屬性值



Attribute attribute = (Attribute)attributes.get(n);


屬性名稱: attribute.getName();


屬性值: attribute.getValue();



7



取得根節點第n個子節點之名稱及資料值



Element element = (Element)elementList.get(n);


List nodeList = element.getChildren();


for ( int index = 0; index < nodeList.size(); index++ ) {


Element node = (Element)nodeList.get(index);


node.getName();//節點名稱


node.getText();//節點資料值


}






產生XML: Java



產出結果








洪鋕鋒



Tainan


06-5051888


702


Taiwan






import java.io.FileOutputStream;


import org.jdom.*;


import org.jdom.output.XMLOutputter;


import org.jdom.output.Format;



Element rootElement = new Element("addressbook"); //產生根節點


Element nameElement = new Element("name"); //產生第一個子節點


nameElement.setAttribute("age", "30"); //為第一個子節點新增一個屬性,並設定資料值


nameElement.addContent("洪鋕鋒"); //設定第一個子節點之內容


rootElement.addContent(nameElement); //將第一個子節點與根節點建立關係



Element addressElement = new Element("address");


addressElement.addContent(" Tainan ");


rootElement.addContent(addressElement);



Element telephoneElement = new Element("telephone");


telephoneElement.addContent("06-5051888");


rootElement.addContent(telephoneElement);



Element zipElement = new Element("zip");


zipElement.addContent("702");


rootElement.addContent(zipElement);



Element countryElement = new Element("country");


countryElement.addContent(" Taiwan ");


rootElement.addContent(countryElement);



Document document = new Document(rootElement); //以根節點為主,建立一個Document


FileOutputStream output = new FileOutputStream(outputFileName); //建立輸出內容之檔案


try {


XMLOutputter outputter = new XMLOutputter(); //建立一個XML檔案輸出器


Format xmlFormat = outputter.getFormat(); //取得該檔案輸出器之內容格式化工具


xmlFormat.setEncoding("Big5"); //設定該XML檔案之編碼


xmlFormat.setLineSeparator("\r\n"); //設定該XML內容每一行之間隔符號


xmlFormat.setIndent(" "); //設定內縮字元


outputter.setFormat(xmlFormat); //設定檔案之格式化工具


outputter.output(document, output); //輸出內容


} finally {


output.close(); //關閉輸出檔案


}




讀取XML: Delphi




































項目



控制內容



Syntax



1



使用之外部API



XMLDoc



2



讀取XML檔案



var


xmlDocument: TXMLDocument;


xmlDocument := TXMLDocument.Create('c:\unpackingCarriers.xml');



3



取得XML檔案之根節點



Element rootElement = document.getRootElement();



4



取得根節點有多少子節點



List elementList = rootElement.getChildren();



5



取得根節點之屬性



List attributes = rootElement.getAttributes();



6



取得第n個屬性之屬性名稱及屬性值



Attribute attribute = (Attribute)attributes.get(n);


屬性名稱: attribute.getName();


屬性值: attribute.getValue();



7



取得根節點第n個子節點之名稱及資料值



Element element = (Element)elementList.get(n);


List nodeList = element.getChildren();


for ( int index = 0; index < nodeList.size(); index++ ) {


Element node = (Element)nodeList.get(index);


node.getName();//節點名稱


node.getText();//節點資料值


}






分享:如何在 Tomcat 中使用 log4j 的 DailyRollingFileAppender

1. 如果要以Log4j取代原先Tomcat所使用之log mechanism

1.1將log4j-1.2.8.jar copy into TOMCAT HOME\common\lib

1.2 create one file log4j.properties and save it into TOMCAT HOME\common\classes

1.3如果沒有將log4j.properties copy into TOMCAT HOME\common\classes,則在啟動Tomcat時會出現

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).

log4j:WARN Please initialize the log4j system properly.

2. 如果要以Log4j提供web application進行log

2.1將log4j-1.2.8.jar copy into web ap\WEB-INF\lib

2.2 create one file log4j.properties and save it into web ap\WEB-INF\classes(絕不可在其他目錄,即使是

此目錄之子目錄下亦不允許)

2.3如果沒有將log4j.properties copy into web ap\WEB-INF\classes,則在啟動Tomcat時會出現

log4j:WARN No appenders could be found for logger (org.apache.struts.util.PropertyMessageResources).

log4j:WARN Please initialize the log4j system properly.

3. 如果要將log寫入到一個檔案中,則在log4j.properties中之

log4j.appender.AFile.File=d:/logFile.logè一定要指定絕對路徑,且separator需為/

4. 如果web ap中所有的log要寫到同一個log file

log4j.properties
.java

log4j.rootLogger=INFO, admin

log4j.appender.admin=org.apache.log4j.FileAppender

log4j.appender.admin.File=d:/AnMeiLogAdmin.log

log4j.appender.admin.Append=false

log4j.appender.admin.layout=org.apache.log4j.PatternLayout

log4j.appender.admin.layout.ConversionPattern=%p %t %c - %m %n


static Logger logger = Logger.getLogger(AdminAction.class.getName());





logger.info("Admin log");




5. 如果web ap中每個class要寫到各自之log file

log4j.properties
.java

log4j.category.profile=INFO, profile

log4j.appender.profile=org.apache.log4j.FileAppender

log4j.appender.profile.File=d:/AnMeiLogProfile.log

log4j.appender.profile.Append=false

log4j.appender.profile.layout=org.apache.log4j.PatternLayout

log4j.appender.profile.layout.ConversionPattern=%p %t %c - %m %n


static Category logger = Category.getInstance("profile");





logger.info("Profile log");






6. 如果web ap中每個package要寫到各自之log file

log4j.properties
.java

log4j.logger.com.anmei.db=INFO, package

log4j.appender.package=org.apache.log4j.FileAppender

log4j.appender.package.File=d:/AnMeiLogPackage.log

log4j.appender.package.Append=false

log4j.appender.package.layout=org.apache.log4j.PatternLayout

log4j.appender.package.layout.ConversionPattern=%p %t %c - %m %n


static Logger logger = Logger.getLogger("com.anmei.db");





logger.info("Package log");