지식메모
-
Windows 10 에서 응용프로그램 AppID 확인하는 방법2019.09.03
-
다빈치 리졸브 영상편집 소소한 팁 (영상 옮기기,끼워넣기,복제하기)2019.09.01
-
다빈치 리졸브 15 초간단 손떨림 보정하기2019.07.14
-
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기]2019.07.07
Windows 10 에서 응용프로그램 AppID 확인하는 방법
windows 검색에서 powershell 실행
명령어로 get-StartApps 를 입력하면 AppID 확인이 가능하다.
참고로 파일 탐색기 AppID 는
파일 탐색기 Microsoft.Windows.Explorer
이렇게 나왔지만 막상 winappdriver에서 가져다 쓸 때는 탐색기 실행 경로(C:\\Windows\\explorer.exe)를 넣어주어야 실행이 되었다.
'지식메모 > 자동화' 카테고리의 다른 글
Winappdriver 에서 우클릭 메뉴 클릭하기 (0) | 2019.11.19 |
---|---|
Winappdriver 주요 기능 사용법 in java (0) | 2019.10.02 |
Winappdriver로 Windows 10 계산기 자동화 테스트(CalculatorTest 튜토리얼 자동화 Java 예제 Eclipse에서 실행하기) (0) | 2019.08.09 |
selenium 크롬 자동화 할 때 현재 실행중인 크롬에서 실행하기 (3) | 2019.01.04 |
python과 java 에서 selenium 으로 크롬 자동화시 chromedriver.exe 프로세스 죽이기 (1) | 2018.12.30 |
다빈치 리졸브 영상편집 소소한 팁 (영상 옮기기,끼워넣기,복제하기)
'지식메모 > Davinci Resolve' 카테고리의 다른 글
다빈치 리졸브에서 영상 일부분만 따로 렌더링하기 (1) | 2019.11.13 |
---|---|
다빈치 리졸브 15 - 이미지 따라다니게 하기(Fusion Tracker 사용) (0) | 2019.09.14 |
다빈치 리졸브에서 영상 잘라내기 How to Crop the video in Davinci Resolve (0) | 2019.08.08 |
다빈치 리졸브 15 초간단 손떨림 보정하기 (0) | 2019.07.14 |
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기] (0) | 2019.07.07 |
Winappdriver로 Windows 10 계산기 자동화 테스트(CalculatorTest 튜토리얼 자동화 Java 예제 Eclipse에서 실행하기)
How to execute winappdriver Tutorial in eclipse with java (CalculatorTest Sample)
Winappdriver 공식 Github 주소
https://github.com/microsoft/WinAppDriver
공식 설명은 아래와 같다
Windows 응용 프로그램 드라이버는 Windows 응용 프로그램에서 Selenium과 유사한 UI 테스트 자동화를 지원하는 서비스입니다. 이 서비스는 Windows 10 PC 에서 UWP (유니버설 Windows 플랫폼) , WinForms (Windows Forms) , WPF (Windows Presentation Foundation) 및 Win32 (클래식 Windows) 앱 테스트를 지원합니다 . Windows 애플리케이션 드라이버는 JSON 와이어 프로토콜 표준 및 Appium에서 정의한 일부 애플리케이션 관리 기능을 준수 합니다. Appium 을 사용하여 Windows 응용 프로그램을 테스트 하기위한 더 나은 지원을 찾고 있다면 이 서비스가 적합합니다. |
Nodejs와 appium 설치가 필요하다. Maven으로 실행시에는 설치 없어도 동작했다.
셋팅 및 사전 준비
1. Windows 10 개발자 모드 켜기
개발자 모드가 켜져있어야 실행이 가능하다. 왜 안되나 한참 삽질을 했었는데 개발자 모드를 안 킨게 문제였다 ;;
윈도우 10 설정 > 업데이트 및 보안 > 개발자용 메뉴에서 개발자 모드를 켜준다.
처음으로 키면 아마 패키지가 설치될 것이다. 설치를 완료되면 개발자 모드를 사용할 수 있다
2. Winappdriver 설치하기
먼저 아래 링크에서 Winappdriver를 설치해준다
https://github.com/Microsoft/WinAppDriver/releases
글 작성 시점 1.1 버전을 설치
설치하면 C:\Program Files (x86)\Windows Application Driver 이 경로에 설치가 될 것이다. 해당 경로로 이동하여 WinAppDriver.exe 를 관리자 권한으로 실행해준다. 그럼 아래와 같은 터미널 창이 열린다.
그럼 설치 완료
그리고 아래 내려가보면 UiRecorder가 있는데 xpath를 확인할 때 필요하므로 설치해주어야 한다.
3. Windows 10 SDK 설치
이건 Windows에서 응용프로그램 요소를 확인하려면 VisualUIVerifyNative를 실행해야한다. 이걸 설치하기 위해서 Windows10 SDK를 설치한다. 아래 링크로 이동하여 SDK를 설치한다. (이미 설치되어 있을 수도 있으니 C:\Program Files (x86)\Windows Kits 경로가 있는지 확인해본다)
https://developer.microsoft.com/ko-kr/windows/downloads/sdk-archive
SDK도 여러 버전이 있는데 최신 버전을 설치해도 될 것 같으나 현재 사용하고 있는 윈도우 10 버전과 같은 걸로 설치했다. SDK 설치를 클릭하여 설치파일을 받은 후 설치
윈도우 버전 확인은 윈도우 검색창에 Windows version 으로 실행하면 시스템 정보 창이 뜨는데 거기서 확인할 수 있다.
별다른 설정없이 쭉 넘겨서 설치하였다.
설치를 하고 나면 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86\UIAVerify 이 경로에서 VisualUIAVerifyNative.exe 이 파일을 찾을 수 있다. 실행해보면 아래와 같은 창이 뜬다.
여기서 프로그램의 요소를 확인해볼 수 있다. 그리고 프로그램의 요소를 확인해볼 수 있는 프로그램이 하나 또 있는데 inspect.exe 로 C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86 이 경로에서 실행가능하다. 이게 더 편리한 점은 마우스로 응용프로그램 요소에 이동하거나 클릭하면 자동으로 정보를 보여준다.
그래서 굳이 VisualUIVerifyNative 처럼 일일이 찾아볼 필요가 없긴 한데 이상하게 자꾸 다운 먹고 멈춰버린다. 원인은 모르겠다..
4. CalculatorTest Samples 예제 다운 받기
https://github.com/microsoft/WinAppDriver 에서 우측 상단 Clone or download 를 클릭하여 내려받는다.
압축을 풀고 나면 WinAppDriver-1.1\Samples\Java 이 경로에 CalculatorTest 예제 프로젝트를 확인할 수 있다.
5. 필요한 라이브러리 다운 받기
참고로 Maven 프로젝트로 하는 경우 라이브러리 다운이 필요없으니 바로 맨 아래 Maven 프로젝트에서 실행하기를 참고
※라이브러리 버전은 시점에 따라 다를 수 있음
appium 다운받기 - http://appium.io/downloads.html
그러면 java-client-7.2.0.jar 이 다운로드 받아진다.
Selenium 라이브러리 다운받기 - https://www.seleniumhq.org/download/
selenium-server-standalone-3.141.59.jar이 다운로드 받아진다.
6. Eclipse 에서 프로젝트 셋팅하기
메뉴 [File > New > Java Project]를 선택하고 새로운 프로젝트를 생성.
프로젝트 우클릭 > Properties > Java Build Path > Add External JARS.. 클릭하여 아까 받은 appium과 Selenium 라이브러리를 추가해준다.
그 다음에는 Add Library 클릭하여 Junit 라이브러리를 추가해준다. (Junit 버전은 환경마다 다를 수 있음)
File > New > Package 를 생성해준다.
전에 다운로드 받았던 Calculator 샘플코드를 복사해온다. 경로 WinAppDriver-master\Samples\Java\CalculatorTest\src\test\java\CalculatorTest.java
파일을 winappdriver 패키지 안에 붙여넣어 준다.
그럼 에러가 하나 뜨는데 패키지명이 없어 뜨는 에러이다. 패키지명을 직접 입력해주거나 에러 메시지를 보고 추가해주면 된다.
그럼 에러가 사라진다
7. 실행해보기
먼저 Winappdriver.exe를 실행해준다. 경로 C:\Program Files (x86)\Windows Application Driver\Winappdriver.exe
CalculatorTest.java 우클릭 > Run As > JUnit Test 클릭
그럼 계산기가 실행되는데 만약 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 이런 에러가 뜬다면
http://commons.apache.org/proper/commons-lang/download_lang.cgi 여기 들어가서 파일을 설치해준다.
압축을 풀고 나면 아래 파일이 나오는데 commons-lang3-3.9.jar 파일을 프로젝트 Java Build Path에 추가해준다.
그리고 다시 JUnit Test를 실행하면 계산기가 실행되고 에러가 발생하지 않는다.
8. 에러 수정하기
그런데 문제는 요소를 찾지 못한다는 에러가 뜨는데
org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters.
이 원인은 코드가 영문판 계산기로 되어있기 때문이다. 그래서 코드를 한글 계산기로 수정해주어야 한다. 에러 코드 마지막에 보면
51번째 줄 에러가 나오는데 그 줄이 바로 계산기의 지우기 버튼 부분이다.
이게 영문 윈도우 계산기에서는 요소가 "Clear"로 표시되는건데 한글 윈도우에서는 다르게 나온다. 이를 확인하기 위해 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86\UIAVerify 이 경로에서 VisualUIAVerifyNative.exe 를 실행해준다.
왼쪽 목록에서 계산기를 찾아 트리를 열어보면 해당 요소에 포커싱이 된다.
저 C버튼의 요소명이 영문은 "Clear"로 되어있는거였고 한글은 보다시피 "지우기"로 되어있다. 코드를 지우기로 바꿔준다.
다시 실행해보면 이제 51번째에서 에러가 발생하지 않는다. 이제 다음 코드에서 또 에러가 발생하는데
이것도 같은 원인이다. 기대값과 실제값이 달라서 나오는 에러이다. 결과값 표시하는 부분의 요소를 확인해본다.
코드에서 결과값을 파싱하는 함수를 확인해보면
이 함수는 결과값을 파싱해서 "Display is"를 잘라내는 기능을 가지고 있다. "Display is" 를 "표시는" 으로 수정해준다.
즉 이 함수는 "표시는 0" 결과값을 표시는은 잘라내어서 "0"만 출력해주는 함수로 Assert.assertEquals("0", _GetCalculatorResultText()); 이 코드의 Assert 기대 값과 일치하게 된다. 다시 실행해보면 에러가 해결되고 다음 에러가 또 발생한다.
이것 또한 역시 요소를 찾을 수 없다는 에러이다. 요소를 확인해보면
그래서 일단 숫자는 모두 아라비아 숫자로 수정해주면 되고 연산자 또한 한글에 맞게 수정해주어야 한다.
숫자와 연산자를 모두 수정한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package winappdriver;
import org.junit.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.windows.WindowsDriver;
public class CalculatorTest {
private static WindowsDriver CalculatorSession = null;
private static WebElement CalculatorResult = null;
@BeforeClass
public static void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App");
CalculatorSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), capabilities);
CalculatorSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
CalculatorResult = CalculatorSession.findElementByAccessibilityId("CalculatorResults");
Assert.assertNotNull(CalculatorResult);
}catch(Exception e){
e.printStackTrace();
} finally {
}
}
@Before
public void Clear()
{
CalculatorSession.findElementByName("지우기").click();
Assert.assertEquals("0", _GetCalculatorResultText());
}
@AfterClass
public static void TearDown()
{
CalculatorResult = null;
if (CalculatorSession != null) {
CalculatorSession.quit();
}
CalculatorSession = null;
}
@Test
public void Addition()
{
CalculatorSession.findElementByName("1").click();
CalculatorSession.findElementByName("더하기").click();
CalculatorSession.findElementByName("7").click();
CalculatorSession.findElementByName("같음").click();
Assert.assertEquals("8", _GetCalculatorResultText());
}
@Test
public void Combination()
{
CalculatorSession.findElementByName("7").click();
CalculatorSession.findElementByName("곱하기").click();
CalculatorSession.findElementByName("9").click();
CalculatorSession.findElementByName("더하기").click();
CalculatorSession.findElementByName("1").click();
CalculatorSession.findElementByName("같음").click();
CalculatorSession.findElementByName("나누기").click();
CalculatorSession.findElementByName("8").click();
CalculatorSession.findElementByName("같음").click();
Assert.assertEquals("8", _GetCalculatorResultText());
}
@Test
public void Division()
{
CalculatorSession.findElementByName("8").click();
CalculatorSession.findElementByName("8").click();
CalculatorSession.findElementByName("나누기").click();
CalculatorSession.findElementByName("1").click();
CalculatorSession.findElementByName("1").click();
CalculatorSession.findElementByName("같음").click();
Assert.assertEquals("8", _GetCalculatorResultText());
}
@Test
public void Multiplication()
{
CalculatorSession.findElementByName("9").click();
CalculatorSession.findElementByName("곱하기").click();
CalculatorSession.findElementByName("9").click();
CalculatorSession.findElementByName("같음").click();
Assert.assertEquals("81", _GetCalculatorResultText());
}
@Test
public void Subtraction()
{
CalculatorSession.findElementByName("9").click();
CalculatorSession.findElementByName("빼기").click();
CalculatorSession.findElementByName("1").click();
CalculatorSession.findElementByName("같음").click();
Assert.assertEquals("8", _GetCalculatorResultText());
}
protected String _GetCalculatorResultText()
{
// trim extra text and whitespace off of the display value
return CalculatorResult.getText().replace("표시는", "").trim();
}
}
|
cs |
테스트 수행 영상
다음은 Maven 프로젝트에서 실행하기
Maven 프로젝트는 라이브러리를 다운받아 프로젝트에 추가할 필요 없이 pom.xml에서 Maven repository 설정만 해주면 실행이 가능하다.
File > New > Other 진입 후 Maven Project 선택
별다른 설정은 건드리지 않고 생성하였다. 위에 있는 코드 중 패키지 코드를 제외한 코드를 복사해서 AppTest.java에 붙여넣기 한다.
그럼 에러가 쫙 뜨는데 이건 Maven repository 설정을 해주어야 한다.
예제 샘플 폴더에서 WinAppDriver-1.1\Samples\Java\CalculatorTest 경로로 이동하여 pom.xml 파일을 프로젝트에 덮어씌운다.
아니면 아래 코드를 pom.xml에 붙여넣기 한다
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>CalculatorTest</groupId>
<artifactId>CalculatorTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>5.0.0-BETA6</version>
</dependency>
</dependencies>
</project>
붙여넣기 하고나면 에러가 모두 사라졌을 것이다. 클래스명 에러만 남았을 텐데 이건 파일명과 똑같이 맞춰주면 해결된다. 그리고 JUnit Test Run을 실행하면 계산기 자동화 테스트가 수행된다.
예제 파일
'지식메모 > 자동화' 카테고리의 다른 글
Winappdriver 주요 기능 사용법 in java (0) | 2019.10.02 |
---|---|
Windows 10 에서 응용프로그램 AppID 확인하는 방법 (0) | 2019.09.03 |
selenium 크롬 자동화 할 때 현재 실행중인 크롬에서 실행하기 (3) | 2019.01.04 |
python과 java 에서 selenium 으로 크롬 자동화시 chromedriver.exe 프로세스 죽이기 (1) | 2018.12.30 |
Rest-assured를 사용하여 간단한 Naver Open API 테스트 (0) | 2017.03.13 |
다빈치 리졸브에서 영상 잘라내기 How to Crop the video in Davinci Resolve
다빈치 리졸브에서 영상의 일부를 잘라내는 방법입니다.
crop 모드로 영상의 일부를 잘라낼 수 있습니다.
영상을 변형시킬 때에는 Tranform모드로 해주어야 변형이 가능합니다.
'지식메모 > Davinci Resolve' 카테고리의 다른 글
다빈치 리졸브 15 - 이미지 따라다니게 하기(Fusion Tracker 사용) (0) | 2019.09.14 |
---|---|
다빈치 리졸브 영상편집 소소한 팁 (영상 옮기기,끼워넣기,복제하기) (0) | 2019.09.01 |
다빈치 리졸브 15 초간단 손떨림 보정하기 (0) | 2019.07.14 |
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기] (0) | 2019.07.07 |
다빈치 리졸브에서 크로마키 영상 합성하기 (15.2.4 버전) (2) | 2019.05.23 |
다빈치 리졸브 15 초간단 손떨림 보정하기
다빈치 리졸브 15.2.4 Ver
주로 스마트폰으로 촬영하는 사용자로서 흔들림 생길 때가 많다.
물론 갤럭시S10 에는 슈퍼스테디 기능이 있지만 낮이 아니면 뭔가 화질이 떨어지는 것 같다
다빈치 리졸브에서 이런 흔들림을 잡아주는 기능이 있어서 사용해보았다
복잡하지도 않고 그냥 Stabilize 만 눌러주면 알아서 다해준다.
'지식메모 > Davinci Resolve' 카테고리의 다른 글
다빈치 리졸브 영상편집 소소한 팁 (영상 옮기기,끼워넣기,복제하기) (0) | 2019.09.01 |
---|---|
다빈치 리졸브에서 영상 잘라내기 How to Crop the video in Davinci Resolve (0) | 2019.08.08 |
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기] (0) | 2019.07.07 |
다빈치 리졸브에서 크로마키 영상 합성하기 (15.2.4 버전) (2) | 2019.05.23 |
다빈치 리졸브 15 - 서로 다른 영상의 길이를 한번에 같은 길이로 변경하기 (0) | 2019.02.19 |
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기]
다빈치 리졸브 15.2.4 버전
영상 속에서 틈새에 영상을 집어넣는 것으로 마스킹 이라고도 불리는 효과입니다.
'지식메모 > Davinci Resolve' 카테고리의 다른 글
다빈치 리졸브에서 영상 잘라내기 How to Crop the video in Davinci Resolve (0) | 2019.08.08 |
---|---|
다빈치 리졸브 15 초간단 손떨림 보정하기 (0) | 2019.07.14 |
다빈치 리졸브에서 크로마키 영상 합성하기 (15.2.4 버전) (2) | 2019.05.23 |
다빈치 리졸브 15 - 서로 다른 영상의 길이를 한번에 같은 길이로 변경하기 (0) | 2019.02.19 |
영상 빈 공간에 영상을 채워넣어 배경으로 사용하기 [다빈치 리졸브 15.2.4 Ver] (0) | 2019.02.16 |
다빈치 리졸브에서 크로마키 영상 합성하기 (15.2.4 버전)
다빈치 리졸브 15.2.4 기준
크로마키 영상과 일반 영상 합성하는 방법
크로마키 영상은 Chroma key clips 또는 green screen으로 유튜브에서 검색시 무료 클립들을 받을 수 있다.
사용 조건도 확인 필수
'지식메모 > Davinci Resolve' 카테고리의 다른 글
다빈치 리졸브 15 초간단 손떨림 보정하기 (0) | 2019.07.14 |
---|---|
다빈치 리졸브에서 영상 마스킹 해보기 [틈새에 영상 집어넣기] (0) | 2019.07.07 |
다빈치 리졸브 15 - 서로 다른 영상의 길이를 한번에 같은 길이로 변경하기 (0) | 2019.02.19 |
영상 빈 공간에 영상을 채워넣어 배경으로 사용하기 [다빈치 리졸브 15.2.4 Ver] (0) | 2019.02.16 |
다빈치 리졸브 15 - 동영상 손글씨 애니메이션 만들기(Davinci Resolve 15 - Write On Brush Stroke Text Effect) (0) | 2018.12.14 |
poi 라이브러리를 활용하여 엑셀 열(column) 별로 데이터 가져와 ArrayList에 넣기
기본 코드는 이 링크를 참고하였습니다.
https://javaslave.tistory.com/78
POI 버전은 3.11을 사용하였습니다. (최신 poi 4점대 버전에서는 코드가 동작하지 않습니다)
poi 3.11 라이브러리 파일
용량 제한으로 압축파일 2개로 나뉘어 첨부함
사용 용도
위와 같은 엑셀 내용에서 각 열 별로 데이터를 긁어와 각 ArrayList에 저장함
로그인시
ID에는 ArrayList1.get(0)
암호에는 ArrayList2.get(0)
이런 식을 1:1 매칭해서 로그인에 활용하는 단순 용도
발생하는 문제점
첫 열의 개수에 따라 나머지 열의 개수가 결정됨
첫 열이 10개고 나머지 열이 20개,16개 등등 제 각기라면 첫 열 기준으로 모두 10개의 데이터만 가져오게 되는 문제가 존재함
전체 코드
package poi;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class POIReader {
public static List<String> account1 = new ArrayList<String>();
public static List<String> account2= new ArrayList<String>();
public static List<String> account3 = new ArrayList<String>();
public static List<String> account4 = new ArrayList<String>();
public static List<String> account5 = new ArrayList<String>();
public static List<String> account6 = new ArrayList<String>();
/**
* XLSX 파일을 분석하여 List<poi> 객체로 반환
* @param filePath
* @return
* @return
*/
public static void xlsxTopoiList(String filePath) {
// 반환할 객체를 생성
FileInputStream fis = null;
XSSFWorkbook workbook = null;
try {
fis= new FileInputStream(filePath);
// XSSFWorkbook은 엑셀파일 전체 내용을 담고 있는 객체
workbook = new XSSFWorkbook (fis);
// 탐색에 사용할 Sheet, Row, Cell 객체
XSSFSheet curSheet;
XSSFRow curRow;
XSSFCell curCell;
// poiList vo;
// Sheet 탐색 for문
for(int sheetIndex = 0 ; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
// 현재 Sheet 반환
curSheet = workbook.getSheetAt(sheetIndex);
// row 탐색 for문
for(int rowIndex=0; rowIndex < curSheet.getPhysicalNumberOfRows(); rowIndex++) {
// row 0은 헤더정보이기 때문에 무시
if(rowIndex != 0) {
// 현재 row 반환
curRow = curSheet.getRow(rowIndex);
// vo = new poiList();
String value;
// row의 첫번째 cell값이 비어있지 않은 경우 만 cell탐색
System.out.println("---"+curRow.getCell(0));
if(curRow.getCell(0) != null){ // 첫번째열 모자를 때 구분
if(!"".equals(curRow.getCell(0).getStringCellValue())) {
// cell 탐색 for 문
for(int cellIndex=0;cellIndex<curRow.getPhysicalNumberOfCells(); cellIndex++) {
curCell = curRow.getCell(cellIndex);
if(true) {
value = "";
// cell 스타일이 다르더라도 String으로 반환 받음
if(curCell != null){ //각 열의 목록 길이에 따라 분기
switch (curCell.getCellType()){
case XSSFCell.CELL_TYPE_FORMULA:
value = curCell.getCellFormula();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
value = curCell.getNumericCellValue()+"";
break;
case XSSFCell.CELL_TYPE_STRING:
value = curCell.getStringCellValue()+"";
break;
case XSSFCell.CELL_TYPE_BLANK:
value = curCell.getBooleanCellValue()+"";
break;
case XSSFCell.CELL_TYPE_ERROR:
value = curCell.getErrorCellValue()+"";
break;
default:
value = new String();
break;
}
}
switch (cellIndex) {
case 0: // name
account1.add(rowIndex-1, value);
break;
case 1: // 암호
account2.add(rowIndex-1, value);
break;
case 2: // 여기서 하나씩 분류
account3.add(rowIndex-1, value);
break;
case 3: // 여기서 하나씩 분류
account4.add(rowIndex-1, value);
break;
case 4: // 여기서 하나씩 분류
account5.add(rowIndex-1, value);
break;
case 5: // 여기서 하나씩 분류
account6.add(rowIndex-1, value);
break;
default:
break;
}
}
}
}
}
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 사용한 자원은 finally에서 해제
if( workbook!= null)
workbook.close();
if( fis!= null) fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
'지식메모 > JAVA' 카테고리의 다른 글
자바 Swing에서 ArrayList를 JcomboBox에 집어넣기 (1) | 2019.04.28 |
---|---|
자바 스윙으로 파일 열기창 구현 (0) | 2017.06.14 |
json Array 내부에 있는 Json 데이터 추출하여 배열에 저장하기 (1) | 2017.03.29 |
자바 일정구간 문자열 추출하기 (0) | 2017.03.24 |
eclipse java.lang.SecurityException: class "org.hamcrest.Matchers"' 에러 해결하기 (0) | 2017.03.13 |