Java怎樣處理EXCEL的讀取

須要包:poi-3.5.jar、poi-ooxml-3.5.jar

?

實例:

[java]?view plaincopy
  1. public?class?ProcessExcel?{??
  2. ??
  3. ????private?Workbook?wb?=?null;??
  4. ????private?Sheet?s?=?null;??
  5. ????private?Row?row?=?null;??
  6. ??
  7. ????public?ProcessExcel(String?filePath)?{??
  8. ????????try?{??
  9. ????????????System.out.println(filePath);??
  10. ????????????if?(filePath.endsWith("xls"))?{??
  11. ????????????????wb?=??new?HSSFWorkbook(new?FileInputStream(new?File(filePath)));??
  12. ????????????}?else?{??
  13. ????????????????wb?=?new?XSSFWorkbook(filePath);??
  14. ????????????}??
  15. ????????????System.out.println(wb);??
  16. ????????}?catch?(IOException?e)?{??
  17. ????????????e.printStackTrace();??
  18. ????????}??
  19. ????}??
  20. ??
  21. ????/**?
  22. ?????*?表格表2-27-1?院(系)教學效果——本科生學科競賽獲獎情況?(TBL_DEPART_SUBJECT_HONOR)??
  23. ?????*?
  24. ?????*?@param?isInsert?
  25. ?????*/??
  26. ????public?ExcelModel?importExcel3281()?{??
  27. ????????ExcelModel?em?=?new?ExcelModel();??
  28. ????????List<TblDepartSubjectHonor>?list?=?new?ArrayList<TblDepartSubjectHonor>();??
  29. ????????TblDepartSubjectHonor?eb?=?null;??
  30. ????????s?=?wb.getSheetAt(0);??
  31. ????????for?(int?i?=?2;?i?<?s.getPhysicalNumberOfRows();?i++)?{??
  32. ????????????for?(int?j?=?0;?j?<?7;?j++)?{??
  33. ????????????????if?(s.getRow(i).getCell(j)?==?null)?{??
  34. ????????????????????em.setState("第"?+?(i?+?1)?+?"行第"?+?(j?+?1)??
  35. ????????????????????????????+?"列為空值,請檢查好再導入.");??
  36. ????????????????????return?em;??
  37. ????????????????}??
  38. ????????????}??
  39. ????????}??
  40. ??
  41. ????????for?(int?i?=?2;?i?<?s.getPhysicalNumberOfRows();?i++)?{??
  42. ????????????eb?=?new?TblDepartSubjectHonor();??
  43. ????????????row?=?s.getRow(i);??
  44. ????????????eb.setHjxm(row.getCell(0).toString());//?獲取項目??
  45. ????????????eb.setJlmc(StringUtils.trim(row.getCell(1).toString()));??
  46. ????????????String?JB?=?StringUtils.trim(row.getCell(2).toString());??
  47. ????????????if?(JB.equals("國家級"))?{??
  48. ????????????????eb.setJb("01");??
  49. ????????????}?else?if?(JB.equals("省級"))?{??
  50. ????????????????eb.setJb("02");??
  51. ????????????}?else?if?(JB.equals("市級"))?{??
  52. ????????????????eb.setJb("03");??
  53. ????????????}?else?{??
  54. ????????????????eb.setJb("04");??
  55. ????????????}??
  56. ????????????eb.setDj(StringUtils.trim(row.getCell(3).toString()));??
  57. ????????????eb.setSydw(StringUtils.trim(row.getCell(4).toString()));??
  58. ????????????eb.setHjzxm(StringUtils.trim(row.getCell(5).toString()));??
  59. ????????????eb.setZdls(StringUtils.trim(row.getCell(6).toString()));??
  60. ????????????String?HDNF?=?StringUtils.trim(row.getCell(7).toString());??
  61. ????????????//?數字處理問題!??
  62. ????????????int?l?=?HDNF.indexOf(".");??
  63. ????????????if?(l?==?-1)?{??
  64. ????????????????l?=?HDNF.length();??
  65. ????????????}??
  66. ????????????eb.setHdnf(HDNF.substring(0,?l));??
  67. ????????????list.add(eb);??
  68. ????????}??
  69. ????????em.setDatas(list);??
  70. ????????return?em;??
  71. ????}??
  72. }??

構造函數是靜態初始化塊,讀取? 文件路徑+文件名稱? 依據后綴的不同創建不同的對象。

ProcessExcel的處理過程就是讀取Excel的特定行,特定列,然后把數據轉化為實體類對象。再將這個對象賦給List,然后 在DAO層採用批處理將數據插入到數據庫中。

ExcelModel? 類的結構例如以下:

[java]?view plaincopy
  1. import?java.util.List;??
  2. ??
  3. public?class?ExcelModel?{??
  4. ????public?List?datas;??
  5. ????public?String?state;??
  6. ????public?List?getDatas()?{??
  7. ????????return?datas;??
  8. ????}??
  9. ????public?void?setDatas(List?datas)?{??
  10. ????????this.datas?=?datas;??
  11. ????}??
  12. ????public?String?getState()?{??
  13. ????????return?state;??
  14. ????}??
  15. ????public?void?setState(String?state)?{??
  16. ????????this.state?=?state;??
  17. ????}??
  18. }??


?

為什么還要又一次定義一個類來做為返回的參數,而不直接使用List對象接受返回對象列表呢?

這相當于ADTs(抽象對象模型)。把與處理Excel的相關信息封裝起來,比方說這個對象不僅有數據對象列表,還有狀態信息,假設讀取Excel時,Excel數據填入向不合法呢。這個狀態信息就能夠向用戶 ,當然不僅僅限制與這兩個數據成員,當我們還須要其它處理Excel的相關信息的時候都能夠向這個Excel里面加入數據成員來進行擴展.

?

POI操作Excel經常用法總結

?

一、 POI簡單介紹

Apache POI是Apache軟件基金會的開放源代碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。

二、 HSSF概況

HSSF 是Horrible SpreadSheet Format的縮寫。通過HSSF,你能夠用純Java代碼來讀取、寫入、改動Excel文件。

HSSF 為讀取操作提供了兩類API:usermodel和eventusermodel,即“用戶模型”和“事件-用戶模型”。

三、 POI EXCEL文檔結構類

HSSFWorkbook excel文檔對象

HSSFSheet excel的sheet HSSFRow excel的行

HSSFCell excel的單元格 HSSFFont excel字體

HSSFName 名稱 HSSFDataFormat 日期格式

HSSFHeader sheet頭

HSSFFooter sheet尾

HSSFCellStyle cell樣式

HSSFDateUtil 日期

HSSFPrintSetup 打印

HSSFErrorConstants 錯誤信息表

四、 EXCEL經常使用操作方法

1、 得到Excel經常使用對象

  1. ?
  2. POIFSFileSystem fs=newPOIFSFileSystem(new????? FileInputStream("d:\test.xls"));
  1. ?
  2. //得到Excel工作簿對象
  1. ?
  2. HSSFWorkbook wb = new HSSFWorkbook(fs);
  1. ?
  2. //得到Excel工作表對象 ?
  3. HSSFSheet sheet =????? wb.getSheetAt(0);
  1. ?
  2. //得到Excel工作表的行
  1. ?
  2. HSSFRow????? row = sheet.getRow(i);
  1. ?
  2. //得到Excel工作表指定行的單元格
  1. ?
  2. HSSFCell cell = row.getCell((short) j);
  1. ?
  2. cellStyle = cell.getCellStyle();//得到單元格樣式

2、建立Excel經常使用對象

  1. ?
  2. HSSFWorkbook wb = new HSSFWorkbook();//創建Excel工作簿對象
  1. ?
  2. HSSFSheet sheet = wb.createSheet("new????? sheet");//創建Excel工作表對象
  1. ?
  2. HSSFRow row = sheet.createRow((short)0); //創建Excel工作表的行
  1. ?
  2. cellStyle = wb.createCellStyle();//創建單元格樣式
  1. ?
  2. row.createCell((short)0).setCellStyle(cellStyle); //創建Excel工作表指定行的單元格
  1. ?
  2. row.createCell((short)0).setCellValue(1); //設置Excel工作表的值
  1. ?
  2. 3、設置sheet名稱和單元格內容 ?
    1. ??
    2. wb.setSheetName(1,?????? "第一張工作表",HSSFCell.ENCODING_UTF_16); ??
    3. cell.setEncoding((short)?????? 1); ?
    ?
    1. ??
    2. cell.setCellValue("單元格內容");?????? ?

4、取得sheet的數目

  1. ?
  2. wb.getNumberOfSheets()?????

5、 依據index取得sheet對象

view plaincopy to clipboardprint?

  1. ?
  2. HSSFSheet sheet = wb.getSheetAt(0);

6、取得有效的行數

  1. ?
  2. int????? rowcount = sheet.getLastRowNum();

7、取得一行的有效單元格個數

  1. ?
  2. row.getLastCellNum();?????

8、單元格值類型讀寫

  1. ?
  2. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //設置單元格為STRING類型
  1. ?
  2. cell.getNumericCellValue();//讀取為數值類型的單元格內容

9、設置列寬、行高

  1. ?
  2. sheet.setColumnWidth((short)column,(short)width);
  1. ?
  2. row.setHeight((short)height);

10、加入區域,合并單元格

  1. ?
  2. Region region = new????? Region((short)rowFrom,(short)columnFrom,(short)rowTo
  1. ?
  2. ,(short)columnTo);//合并從第rowFrom行columnFrom列
  1. ?
  2. sheet.addMergedRegion(region);// 到rowTo行columnTo的區域
  1. ?
  2. //得到全部區域
  1. ?
  2. sheet.getNumMergedRegions()?????

11、保存Excel文件

  1. ?
  2. FileOutputStream fileOut = new FileOutputStream(path); ?
  3. wb.write(fileOut);

12、依據單元格不同屬性返回字符串數值

  1. ?
[html]?view plaincopy
  1. 1.public?String?getCellStringValue(HSSFCell?cell)?{???
  2. ??2.String?cellValue?=?"";???
  3. ??3.switch?(cell.getCellType())?{???
  4. ??4.case?HSSFCell.CELL_TYPE_STRING://字符串類型???
  5. ??5.cellValue??????=?cell.getStringCellValue();???
  6. ??6.if(cellValue.trim().equals("")||cellValue.trim().length()<=0)????????
  7. ??7.cellValue="?";???
  8. ??8.break;???
  9. ??9.case?HSSFCell.CELL_TYPE_NUMERIC:?//數值類型???
  10. ??10.cellValue??????=?String.valueOf(cell.getNumericCellValue());???
  11. ??11.break;???
  12. ??12.case?HSSFCell.CELL_TYPE_FORMULA:?//公式???
  13. ??13.cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);????????
  14. ??14.cellValue??????=?String.valueOf(cell.getNumericCellValue());???
  15. ??15.break;???
  16. ??16.case?HSSFCell.CELL_TYPE_BLANK:???
  17. ??17.cellValue="?";???
  18. ??18.break;???
  19. ??19.case?HSSFCell.CELL_TYPE_BOOLEAN:???
  20. ??20.break;???
  21. ??21.case?HSSFCell.CELL_TYPE_ERROR:???
  22. ??22.break;???
  23. ??23.default:???
  24. ??24.break;???
  25. ??25.}????????
  26. ??26.return?cellValue;???
  27. ??27.}????????


?

  • ?

13、經常使用單元格邊框格式

  1. ?
  2. HSSFCellStyle????? style = wb.createCellStyle();
  1. ?
  2. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下邊框
  1. ?
  2. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左邊框
  1. ?
  2. style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框
  1. ?
  2. style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框

14、設置字體和內容位置

  1. ?
  2. HSSFFont????? f = wb.createFont();
  1. ?
  2. f.setFontHeightInPoints((short) 11);//字號
  1. ?
  2. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
  1. ?
  2. style.setFont(f);????? ?
  3. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
  1. ?
  2. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
  1. ?
  2. style.setRotation(short rotation);//單元格內容的旋轉的角度
  1. ?
  2. HSSFDataFormat????? df = wb.createDataFormat(); ?
  3. style1.setDataFormat(df.getFormat("0.00%"));//設置單元格數據格式
  1. ?
  2. cell.setCellFormula(string);//給單元格設公式
  1. ?
  2. style.setRotation(short rotation);//單元格內容的旋轉的角度

15、插入圖片

  1. ?
  2. //先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray
  1. ?
  2. ByteArrayOutputStream byteArrayOut = new????? ByteArrayOutputStream();
  1. ?
  2. BufferedImage bufferImg = ImageIO.read(new????? File("ok.jpg"));
  1. ?
  2. ImageIO.write(bufferImg,"jpg",byteArrayOut); ?
  3. //讀進一個excel模版
  1. ?
  2. FileInputStream fos = new????? FileInputStream(filePathName+"/stencil.xlt");
  1. ?
  2. fs = new POIFSFileSystem(fos);
  1. ?
  2. //創建一個工作薄 ?
  3. HSSFWorkbook wb = new????? HSSFWorkbook(fs);
  1. ?
  2. HSSFSheet????? sheet = wb.getSheetAt(0);
  1. ?
  2. HSSFPatriarch????? patriarch = sheet.createDrawingPatriarch();
  1. ?
  2. HSSFClientAnchor anchor = new????? HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10); ?
  3. patriarch.createPicture(anchor????? ,????? wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));?????

16、調整工作表位置

  1. ?
  2. HSSFWorkbook wb = new HSSFWorkbook();
  1. ?
  2. HSSFSheet sheet = wb.createSheet("format????? sheet");
  1. ?
  2. HSSFPrintSetup????? ps = sheet.getPrintSetup(); ?
  3. sheet.setAutobreaks(true);
  1. ?
  2. ps.setFitHeight((short)1);
  1. ?
  2. ps.setFitWidth((short)1);

17、設置打印區域

  1. ?
  2. HSSFSheet sheet = wb.createSheet("Sheet1");?????
  1. ?
  2. wb.setPrintArea(0, "$A$1:$C$2");

18、標注腳注

  1. ?
  2. HSSFSheet sheet = wb.createSheet("format????? sheet");
  1. ?
  2. HSSFFooter????? footer = sheet.getFooter()
  1. ?
  2. footer.setRight( "Page " + HSSFFooter.page() +????? " of " + HSSFFooter.numPages() );

19、在工作單中清空行數據。調整行位置

  1. ?
  2. HSSFWorkbook wb = new HSSFWorkbook();
  1. ?
  2. HSSFSheet sheet = wb.createSheet("row????? sheet");
  1. ?
  2. //????? Create various cells and rows for spreadsheet.
  1. ?
  2. //????? Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5) ?
  3. sheet.shiftRows(5, 10, -5);

20、選中指定的工作表

  1. ?
  2. HSSFSheet sheet = wb.createSheet("row????? sheet"); ?
  3. heet.setSelected(true);

21、工作表的放大縮小

  1. ?
  2. HSSFSheet sheet1 = wb.createSheet("new????? sheet");
  1. ?
  2. sheet1.setZoom(1,2); // 50 percent magnification

22、頭注和腳注

  1. ?
  2. HSSFSheet sheet = wb.createSheet("new????? sheet");
  1. ?
  2. HSSFHeader????? header = sheet.getHeader();
  1. ?
  2. header.setCenter("Center Header");
  1. ?
  2. header.setLeft("Left Header");
  1. ?
  2. header.setRight(HSSFHeader.font("Stencil-Normal",????? "Italic") +
  1. ?
  2. HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal????? Italic font and size 16");

23、自己定義顏色

  1. ?
  2. HSSFCellStyle????? style = wb.createCellStyle();
  1. ?
  2. style.setFillForegroundColor(HSSFColor.LIME.index);?????
  1. ?
  2. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);?????
  1. ?
  2. HSSFFont????? font = wb.createFont();
  1. ?
  2. font.setColor(HSSFColor.RED.index);?????
  1. ?
  2. style.setFont(font);????? ?
  3. cell.setCellStyle(style);

24、填充和顏色設置

  1. ?
  2. HSSFCellStyle????? style = wb.createCellStyle();
  1. ?
  2. style.setFillBackgroundColor(HSSFColor.AQUA.index);?????
  1. ?
  2. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);?????
  1. ?
  2. HSSFCell cell = row.createCell((short) 1);
  1. ?
  2. cell.setCellValue("X");
  1. ?
  2. style????? = wb.createCellStyle();
  1. ?
  2. style.setFillForegroundColor(HSSFColor.ORANGE.index);?????
  1. ?
  2. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);?????
  1. ?
  2. cell.setCellStyle(style);?????

25、強行刷新單元格公式

  1. ?
  2. HSSFFormulaEvaluator eval=new????? HSSFFormulaEvaluator((HSSFWorkbook) wb);
  1. ?
  2. private static void updateFormula(Workbook wb,Sheet s,int row){
  1. ?
  2. Row????? r=s.getRow(row);
  1. ?
  2. Cell c=null;
  1. ?
  2. FormulaEcaluator eval=null;
  1. ?
  2. if(wb instanceof HSSFWorkbook)
  1. ?
  2. eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);
  1. ?
  2. else if(wb instanceof XSSFWorkbook)
  1. ?
  2. eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);
  1. ?
  2. for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){ ?
  3. c=r.getCell(i); ?
  4. if(c.getCellType()==Cell.CELL_TYPE_FORMULA)?????
  1. ?
  2. eval.evaluateFormulaCell(c);?????
  1. ?
  2. }????? ?
  3. }

說明:FormulaEvaluator提供了evaluateFormulaCell(Cell cell)方法,計算公式保存結果,但不改變公式。而evaluateInCell(Cell cell) 方法是計算公式。并將原公式替換為計算結果,也就是說該單元格的類型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERIC。HSSFFormulaEvaluator提供了靜態方法evaluateAllFormulaCells(HSSFWorkbook wb) ,計算一個Excel文件的全部公式,用起來非常方便。

轉載于:https://www.cnblogs.com/mfrbuaa/p/5412096.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#替換字符串起始/結尾指定的字符串

#region 替換字符串起始位置(開頭)中指定的字符串/// <summary> /// 替換字符串起始位置(開頭)中指定的字符串 /// </summary> /// <param name"s">源串</param> /// <param name"searchStr">查找的串</param> /…

腐蝕函數cvErode 和 膨脹函數cvDilate

Erode腐蝕&#xff0c; Dilate膨脹&#xff0c;這兩個形態學函數總是成對出現&#xff0c;前者可以消除較小的點如噪音&#xff0c;后者可以使不連通的圖像合并成塊。 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* elementNULL, int iterations1 ); void cvDi…

spring cloud gateway的stripPrefix配置

序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /demo/**stripPrefix: trueurl: http://demo.com.cn/ 復制代碼這里的stripPrefix默認為true…

Zookeeper和分布式環境中的假死腦裂問題(轉)

Zookeeper和分布式環境中的假死腦裂問題 最近和同事聊天無意間發現他們的系統也存在腦裂的問題。想想當初在我們的系統中為了解決腦裂花了非常大的功夫&#xff0c;現在和大家一起討論下腦裂&#xff0c;假死等等這些問題和解決的方法。 在一個大集群中往往會有一個master存在…

【pyqt5學習】【python學習】——通過py文件來執行命令行指令

目錄 1、利用os模塊 2、爬蟲命令 注意 1、利用os模塊 os.system("scrapy crawl search") 2、爬蟲命令 from scrapy.cmdline import execute # 將命令的每個單詞存進一個列表傳給execute() execute("scrapy crawl search".split()) # 相當于在終端…

JSP內置對象詳解

轉自http://www.cnblogs.com/oumyye/p/4240272.html   在JSP中為了簡化用戶的開發&#xff0c;提供了九個內置對象&#xff0c;這些內置對象將由容器為用戶進行實例化&#xff0c;而用戶直接使用即可&#xff0c;而不用像在java中那樣&#xff0c;必須通過關鍵字new進行實例化…

cvMorphology形態學原理解析及源碼分析

⑴ 圖像形態學處理的概念...1 ⑵ 二值圖像的邏輯運算...3 ⑶ 膨脹和腐蝕...4 (4) 高級形態學變換...8 (5) 細化...10 ⑴ 圖像形態學處理的概念 數字圖像處理中的形態學處理是指將數字形態學作為工具從圖像中提取對于表達和描繪區域形狀有用處的圖像分量&#xff0c;比如邊…

安全

2019獨角獸企業重金招聘Python工程師標準>>> 1、不要使用頁面變量進行傳遞值&#xff0c;用session 轉載于:https://my.oschina.net/u/2277088/blog/1621841

lua_string_pattern

兩大特點&#xff1a; 1. string庫中所有的字符索引從前往后是1,2,...;從后往前是-1,-2,... 2. string庫中所有的function都不會直接操作字符串&#xff0c;而是返回一個新的字符串。 庫函數&#xff1a; 1、string.len&#xff0c;string.rep&#xff0c;string.upper&#xf…

【pyqt5學習】QLayout: Attempting to add QLayout “to ***“, which already has a layout

報錯場景&原因 在界面設計時&#xff0c;想實時更新用matplotlib繪制的圖像,即會一次次的調用plot函數&#xff0c;這樣就會重復地向groupbox里面添加布局&#xff0c;但是一個容器只能有一個布局&#xff0c;因此會報錯 def __init__(self):super(weibo_search_logic, se…

3D打印材料PLA,ABS對比

轉載于:https://www.cnblogs.com/sztom/p/6373910.html

扒一扒工業機器人編程語言和種類

機器人編程語言&#xff08;一&#xff09; 伴隨著機器人的發展&#xff0c;機器人語言也得到發展和完善。機器人語言已成為機器人技術的一個重要部分。機器人的功能除了依靠機器人硬件的支持外&#xff0c;相當一部分依賴機器人語言來完成。早期的機器人由于功能單一&#xff…

Java繼承概述以及Java繼承案例和繼承的好處

Java繼承概述 1.多個類中存在相同屬性和行為時&#xff0c;將這些內容抽取到單獨一個類中&#xff0c;那么多個類無需再定義這些相同屬性和行為&#xff0c;只要繼承那個類即可。 2.在Java中通過extends關鍵字可以實現類與類的繼承。 例如&#xff1a;class 子類名 extends 父類…

描述用戶場景

每一個組員根據自己所承擔的項目&#xff0c;描繪用戶場景并將典型用戶和用戶場景描述&#xff01; 典型用戶 ①當代大學生們&#xff0c;我們的收入多數是來自家庭父母給的生活費&#xff0c;或者還包括一些自己打工掙的零塊。收入也就這么幾個來源&#xff0c;但是支出卻多種…

【pyqt5學習】——控件綁定槽函數的同時利用lambda實現傳參

兩種方法&#xff1a; 1、利用pyqtsignal的emit進行傳參 2、connect函數進行傳參 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根據按鈕上的文字來進行閱讀def readZodiacByButtonText(self,text):if self.language &…

如何用MaskBlt實現兩個位圖的合并,從而實現背景透明

我有兩個位圖&#xff0c;一個前景圖&#xff0c;一個背景圖&#xff08;mask用途&#xff09;。請問如何用MaskBlt實現兩個位圖的合并&#xff0c;從而實現背景透明&#xff01; 核心代碼&#xff1a;dcImage.SetBkColor(crColour);dcMask.BitBlt(0, 0, nWidth, nHeight, &…

史陶比爾與機器人之父

早在1982年&#xff0c;史陶比爾已經成立了工業機器人部門&#xff0c;經銷美國UNIMATION公司的PUMA機器人&#xff0c;1988年&#xff0c;史陶比爾成功收購了 UNIMATION。而UNIMATION是世界上最著名的機器人專家恩格爾伯格所創立的企業&#xff0c;PUMA正是世界上第一臺工業機…

git進階

Git 進階用法 Git 高階用法 1. 基本概念 你的本地倉庫由Git維護的三棵樹組成。第一個是你的工作目錄&#xff0c;它持有實際文件&#xff1b; 第二個是緩存區(index),它像個緩存區域&#xff0c;臨時保存您的改動&#xff1b;最后是HEAD,指向你最近 一次提交后的結果。 git add…

lab3

lamp: 在阿里云linux&#xff08;Ubuntu&#xff09;上安裝Apache mysql php &#xff1a; apt-get install mysql_server mysql_client php5 php_mysql apache2 系統會提示正確的包的名稱 安裝ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把壓縮文件拷貝…

【python學習】——pyttsx3庫實現文本朗讀、音量、音速等調節

import pyttsx3# 初始化朗讀引擎 engine pyttsx3.init() # 設置朗讀速度 self.engine.setProperty(rate, 120) # text為需要讀取的內容 self.engine.say(text) # 不添加下面這句&#xff0c;沒有聲音 self.engine.runAndWait()pyttsx3其他應用&#xff1a; python pyttsx3實現…