ספריית Java בקוד פתוח למסמכים של גיליון אלקטרוני

המר קבצי Excel ביישומי Java באמצעות API של קוד פתוח.

Documents4J הוא Java API בקוד פתוח מהמרת Microsoft Excel לפורמטים אחרים של קבצים. זה מושג על ידי האצלת ההמרה לכל אפליקציה מקורית שמבינה את ההמרה של הקובץ הנתון לפורמט היעד הרצוי. ה-API מציע שני סוגים של יישומים מקומיים ומרוחקים. באמצעות מסמך הגרסה המקומית ניתן להמיר באותו מכונה המשמשת להמרת פורמט הקובץ המבוקש. באמצעות ה-API המרוחק, אתה שולח מסמך לשרת באמצעות REST-API והשרת מבצע את ההמרה המבוקשת.

Documents4J שקוף ופשוט לשימוש. מפתחים יכולים לעבוד עם הגרסה המקומית של ה-API בעוד שניתן להשתמש בפיתוח ובגרסה המרוחקת כאשר המפתחים מפרסמים את האפליקציה בהפקה.

Previous Next

תחילת העבודה עם 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();
}
}
 עִברִית