Open Source Java Library สำหรับเอกสารสเปรดชีต
แปลงไฟล์ Excel ในแอปพลิเคชัน Java ผ่าน Open Source API
Documents4J เป็น Java API แบบโอเพ่นซอร์สจากการแปลง Microsoft Excel เป็นรูปแบบไฟล์อื่น สิ่งนี้ทำได้โดยการมอบหมายการแปลงเป็นแอปพลิเคชันดั้งเดิมที่เข้าใจการแปลงไฟล์ที่กำหนดให้เป็นรูปแบบเป้าหมายที่ต้องการ API นำเสนอการใช้งานสองประเภทในพื้นที่และระยะไกล การใช้เอกสารเวอร์ชันท้องถิ่นสามารถแปลงบนเครื่องเดียวกันซึ่งเป็นสายเคเบิลสำหรับแปลงรูปแบบไฟล์ที่ร้องขอ เมื่อใช้ Remote API คุณจะส่งเอกสารไปยังเซิร์ฟเวอร์โดยใช้ REST-API และเซิร์ฟเวอร์จะทำการแปลงที่ร้องขอ
Documents4J มีความโปร่งใสและใช้งานง่าย นักพัฒนาสามารถทำงานกับ API เวอร์ชันในเครื่องได้ในขณะที่กำลังพัฒนาและสามารถใช้เวอร์ชันระยะไกลได้เมื่อนักพัฒนาเผยแพร่แอปในเวอร์ชันที่ใช้งานจริง
เริ่มต้นใช้งาน Documents4J
ก่อนอื่น คุณต้องสร้างสำเนาของ document4j บนเครื่องของคุณ เพียงโคลนที่เก็บของ document4j โดยใช้ git หรือโดยการโคลนโดยตรงบน GitHub เมื่อโคลนที่เก็บแล้ว คุณสามารถสร้างโปรเจ็กต์โดยใช้ Mave
ติดตั้ง Documents4J ผ่าน GitHub
git clone https://github.com/documents4j/documents4j.git
cd documents4j
mvn package
แปลง Microsoft Excel โดยใช้ Java
Documents4J เป็น API ที่คล่องแคล่วสำหรับการแปลงเอกสาร API จะไม่เปิดเผยรายละเอียดใด ๆ ของการใช้ตัวแปลงสำรอง เพื่อทำการแปลงเอกสาร API เสนออินเทอร์เฟซ IConverter การใช้อินเทอร์เฟซนี้ คุณสามารถแปลงรูปแบบไฟล์ Microsoft Excel เป็นรูปแบบไฟล์ที่คุณต้องการได้ หากต้องการค้นหารูปแบบไฟล์การแปลงที่รองรับ คุณสามารถสอบถามเมธอด getSupportedConversion() ซึ่งจะคืนค่าแหล่งที่มาและรูปแบบไฟล์เป้าหมาย
แปลงไฟล์ Excel เป็นรูปแบบไฟล์อื่น ๆ ผ่านทาง Java
Const WdExportFormatPDF = 17
Const MagicFormatPDF = 999
Dim arguments
Set arguments = WScript.Arguments
' Transforms a file using MS Excel into the given format.
Function ConvertFile( inputFile, outputFile, formatEnumeration )
Dim fileSystemObject
Dim excelApplication
Dim excelDocument
' Get the running instance of MS Excel. If Excel is not running, exit the conversion.
On Error Resume Next
Set excelApplication = GetObject(, "Excel.Application")
If Err <> 0 Then
WScript.Quit -6
End If
On Error GoTo 0
' Find the source file on the file system.
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
inputFile = fileSystemObject.GetAbsolutePathName(inputFile)
' Convert the source file only if it exists.
If fileSystemObject.FileExists(inputFile) Then
' Attempt to open the source document.
On Error Resume Next
Set excelDocument = excelApplication.Workbooks.Open(inputFile, , True)
If Err <> 0 Then
WScript.Quit -2
End If
On Error GoTo 0
On Error Resume Next
If formatEnumeration = MagicFormatPDF Then
excelDocument.ExportAsFixedFormat xlTypePDF, outputFile
Else
excelDocument.SaveAs outputFile, formatEnumeration
End If
' Close the source document.
excelDocument.Close False
If Err <> 0 Then
WScript.Quit -3
End If
On Error GoTo 0
' Signal that the conversion was successful.
WScript.Quit 2
Else
' Files does not exist, could not convert
WScript.Quit -4
End If
End Function
' Execute the script.
Call ConvertFile( WScript.Arguments.Unnamed.Item(0), WScript.Arguments.Unnamed.Item(1), CInt(WScript.Arguments.Unnamed.Item(2)) )
แปลงเอกสารสํานักงานเป็น PDF ผ่าน Java
ไลบรารีเอกสาร4J แบบเปิดได้รวมคุณสมบัติที่สําคัญหลายประการสําหรับการแปลงเอกสาร Microsoft office เช่น Word, Excel และ PowerPoint ไฟล์ในรูปแบบไฟล์สนับสนุนอื่น ๆ เช่น PDF หรือภาพ ฯลฯ ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถโหลดโปรแกรมเมอร์ซอฟต์แวร์ได้อย่างง่ายดายและแปลงไฟล์ Microsoft Word Docx เป็นไฟล์ PDF ด้วยรหัสเพียงไม่กี่บรรทัด
แปลงไฟล์ Office Docx เป็น PDF ผ่านทางห้องสมุด Java
public class NewMain {
/**
* @param args the command line arguments
* @throws java.io.FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException, ExecutionException {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
InputStream in = new BufferedInputStream(new FileInputStream(System.getProperty("user.dir") + File.separator +"out.rtf"));
IConverter converter = LocalConverter.builder()
.baseFolder(new File(System.getProperty("user.dir") + File.separator +"test"))
.workerPool(20, 25, 2, TimeUnit.SECONDS)
.processTimeout(5, TimeUnit.SECONDS)
.build();
Future conversion = converter
.convert(in).as(DocumentType.RTF)
.to(bo).as(DocumentType.PDF)
.prioritizeWith(1000) // optional
.schedule();
conversion.get();
try (OutputStream outputStream = new FileOutputStream("out.pdf")) {
bo.writeTo(outputStream);
}
in.close();
bo.close();
}
}