چگونه با استفاده از تكنولوژي JDBC در جاوا، در Sheet هاي Excel داده هاي مورد نظر را بخوانيم و يا در آن بنويسيم؟

سايت مرجع زبان برنامه نويسي جاوا        Java.TadbirPoya.ir> Articles> Java SE> JDBC> How To Read and Write Data to Excel SpreadSheet File

 خواندن و نوشتن داده ها در يك فايل Excel به كمك جاوا

 

 

تکنولوژيهای جاوا
Java SE
Java EE
Java ME
JasperReports

 

لينك هاي مفيد
تدبيرگران پوياپرداز
دانلود هاي جاوا
آموزش جاوا
بازگشت
خانه

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 شماره مقاله  :   36

      تاريخ ايجاد :      1388/05/20

        تاريخ ويرايش :   1388/11/28

        دفعات بروز رساني :    2 

  نويسنده : سيد علي عبدالهي پور

Java-Excel

 

چگونه در برنامه‌ هاي جاوا، از Excel به عنوان بانك اطلاعات يا پايگاه داده استفاده نماييم؟

 

 

يكي از بخش هاي اصلي در برنامه نويسي - به هر زباني كه باشد - برنامه نويسي پايگاه داده ها مي باشد. امروزه اكثر برنامه نويسان با اين شيوه برنامه نويسي آشنا بوده و قادر به نوشتن اين نوع از برنامه هاي كاربردي مي باشند. نكته مهم در اين ميان آن است كه هميشه نرم افزاري كه به عنوان بانك اطلاعات مورد استفاده قرار مي گيرد، يكي از نرم افزارهاي استاندارد پايگاه داده نبوده و ممكن است از ابزاري جايگزين، بنابر شرايط موجود استفاده شود. يكي از برنامه هاي كاربردي كه مي توان از آن به عنوان جايگزين يك بانك اطلاعات در زبان هاي مختلف برنامه نويسي استفاده نمود، نرم افزار Microsoft Excel مي باشد.

زبان برنامه نويسي جاوا قادر است تا از يك فايل Excel‌ به عنوان يك بانك اطلاعات استفاده نمايد. در چنين حالتي مي توان از هر يك از Sheet هاي Excel  به عنوان يك Table، از هر يك از ستون هاي آن به عنوان يك فيلد و از هر يك از رديف هاي آن به عنوان يك سطر استفاده نمود. حال فرض كنيد مي خواهيم يك جدول ساده شامل مشخصات شناسايي چند دانشجو را در يك بانك اطلاعاتي از نوع فايل هاي Excel ايجاد نماييم.

براي انجام اين كار، يكي از Sheet‌هاي فايل Excel را در نظر گرفته و به تعداد فيلدهاي مورد نظر خود در آن، در اولين سطر و در هر يك از سلول هاي آن سطر، نام يكي از فيلدهاي مورد نظر خود را وارد مي نماييم. در مثال هاي اين مقاله فرض مي كنيم كه جدول ما حاوي چهار فيلد شماره دانشجويي يا SID، نام دانشجو يا FirstName، نام خانوادگي دانشجو يا LastName و سن دانشجو يا Age باشد. بنابراين بصورتي كه در تصوير زير نمايش داده شده، عمل مي كنيم.

 

Excel Java

 

در مرحله بعد مسير زير را طي نموده و برنامه ( Data Sources ( ODBC  را اجرا نماييد.

Start - Control Panel - Administrative Tools -Data Source (ODBC)

با اجراي اين برنامه، در اولين صفحه يعني USER DSN، دكمه ADD را كليك كرده و از بين گزينه هاي موجود در صفحه بعد، گزينه زير را انتخاب نماييد.

 

MS Excel Driver

 

سپس از صفحه بعد با كليك بر دكمه Select Workbook، فايل  Excel خود را يافته و گام بعد در اولين كادر موجود در صفحه يعني Data Source Name يك نام براي اين ارتباط انتخاب نماييد. براي اينكه بتوانيد برنامه هاي موجود در اين مقاله را اجرا نماييد، نام  excelDB را وارد نماييد. آخرين مرحله مورد نياز آن است كه روي دكمه Options در گوشه پايين سمت راست صفحه كليک كرده و گزينه Read Only را غير فعال نماييد. حال به محيط جاوا وارد شويد تا برنامه مورد نياز براي خواندن اطلاعات و سپس برنامه مورد نياز براي نوشتن داده ها در جدول ساخته شده را، پياده سازي نماييم.

 

1- خواندن داده ها از بانك اطلاعاتي Excel

در هر دو حالت يعني هم انجام عمل خواندن اطلاعات و هم نوشتن اطلاعات در Excel، از پل ارتباطي JDBC-ODBC استفاده مي نماييم. البته اين امر به اين معني نيست كه براي انجام اين كار فقط روش فوق وجود دارد، بلكه روش ديگري براي كار با فايل هاي Excel نيز موجود مي باشد كه به API خاص خود نياز دارد.

براي شروع كار و با كمك خطوط زير ارتباط بين برنامه جاوا و فايل Excel را برقرار مي نماييم.

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:excelDB";
String username = "";
String password = "";
Class.forName(driver);

سپس به كمك خطوط زير يك Query به فايل Excel زده و داده هاي موجود در Sheet1 را خوانده و نمايش مي دهيم.

stmt = conn.createStatement();
String excelQuery = "select * from [Sheet1$]";
rs = stmt.executeQuery(excelQuery);
while (rs.next()) {
      System.out.println(rs.getInt("SID")+ " " +rs.getString("FirstName")+ " " + rs.getString("LastName")+ " " + rs.getInt("Age"));
}
 

خروجي اين برنامه پس از اجرا بصورت زير مي باشد.


read data from Excel With java

 

2- نوشتن داده ها در بانك اطلاعاتي Excel

براي نوشتن داده ها در فايل فوق و به عبارتي ديگر، اضافه كردن يك ركورد به جدول ايجاد شده، ابتدا مانند قسمت قبل با فايل Excel ارتباط برقرار مي نماييم. سپس با كمك عبارت زير يك سطر به جدول مورد نظر اضافه مي كنيم.

stmt = conn.createStatement();
String excelQuery = "insert into [Sheet1$](SID, FirstName, LastName, Age) values(114 ,'Sadeg','Nosrati',22)";
stmt.executeUpdate(excelQuery);

«نكته» در اين روش، در هنگام نوشتن اطلاعات در فايل Excel، فايل فوق را از قبل باز نماييد.

اگر نمی خواهید که هنگام نوشتن فایل مورد نطر شما باز باشد، کافیست تغییر کوچکی در برنامه بالا ایجاد نمایید. برای این کار کافیست تا بجای استفاده از

stmt = conn.createStatement();
String excelQuery = "insert into [Sheet1$](SID, FirstName, LastName, Age) values(114 ,'Sadeg','Nosrati',22)";
stmt.executeUpdate(excelQuery);

از عبارت زیر استفاده نمایید:

aPreparedStatement = con.prepareStatement (
                        "insert into [Sheet1$]([SID], [FirstName], [LastName], [Age]) values(114 ,'Sadeg','Nosrati',22)");
System.err.println(aPreparedStatement.executeUpdate());
 

برای درک بهتر این موضوع بهتر است برنامه ktExcelTest.java  را اجرا نمایید. در این برنامه علاوه بر نکته فوق نحوه استفاده از متا دیتا در excel نیز مایش داده شده است. بطور مثال در هنگام اجرا برنامه در خروجی وضعیت Readonly بودن فایل اکسل به همراه چند مورد دیگر نمایش داده می شود.

«نکته» اگر دقت کنید بعد از اظافه شدن یک رکورد در فایل excel، مقادیر دو ستون SID و Age به صورت متنی ذخیر می شوند که سبب افزایش حجم فایل می شود. برای جلوگیری از این مشکل باید ابتدا نوع هر یک از ستون ها را در اکسل تعیین نمایید. (مشابه عمل ایجاد جدول در یک بانک اطلاعاتی) برای این منظور کافیست ابتدا ستون مورد نظر را انتخاب نمایید. (بجز عنوان ستون) سپس روی ستون انتخاب شده کلیک راست کرده و گزینه format cell را انتخاب نمایید. سپس از صفحه Number گزینه Number را انتخاب نمایید. با این کار تمام مقادیر عددی بعدی بصورت عدد و نه بصورت متن ذخیره شده و حجم کمتری می گیرند.

دانلود برنامه هاي مورد استفاده در اين مقاله

مطالب موجود در اين سايت به جهت ارتقاء سطح علمي برنامه نويسان جاوا تهيه و تنظيم شده است. در صورت تمايل مي توانيد مطالب خود را در جهت اصلاح يا ارتقاء مقالات موجود و يا ايجاد مقالات جديد به آدرس ايميل زير ارسال نماييد.

 JArticles@TadbirPoya.ir

استفاده از مطالب موجود در سايت با ذكر منبع بلامانع است.

Copyright @2008-2009 TadbirPoya.ir Co.All rights reserved