ספריית Java בקוד פתוח למסמכים של גיליון אלקטרוני
המר קבצי Excel ביישומי Java באמצעות API של קוד פתוח.
Documents4J הוא Java API בקוד פתוח מהמרת Microsoft Excel לפורמטים אחרים של קבצים. זה מושג על ידי האצלת ההמרה לכל אפליקציה מקורית שמבינה את ההמרה של הקובץ הנתון לפורמט היעד הרצוי. ה-API מציע שני סוגים של יישומים מקומיים ומרוחקים. באמצעות מסמך הגרסה המקומית ניתן להמיר באותו מכונה המשמשת להמרת פורמט הקובץ המבוקש. באמצעות ה-API המרוחק, אתה שולח מסמך לשרת באמצעות REST-API והשרת מבצע את ההמרה המבוקשת.
Documents4J שקוף ופשוט לשימוש. מפתחים יכולים לעבוד עם הגרסה המקומית של ה-API בעוד שניתן להשתמש בפיתוח ובגרסה המרוחקת כאשר המפתחים מפרסמים את האפליקציה בהפקה.
תחילת העבודה עם Documents4J
קודם כל, עליך ליצור עותק של documents4j במחשב המקומי שלך. כל שעליך לעשות הוא לשכפל את המאגר של documents4j באמצעות 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)) )
העברת מסמכי Office ל-PDF באמצעות Java
ספריית מסמכי הקוד הפתוח כוללת מספר תכונות חשובות להמרת מסמכי 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();
}
}