Juno có phiên bản mới .5.1 có nhiều cách kết nối tuyệt vời với Word, Excel, FrameMaker, Trados, v.v. Vì vậy, có thể và dễ dàng. Một cái gì đó như thế này:
scope word = new DispatchObject("Word.Application");
scope wDocs = word.get("Documents");
char[] dd = dir ~ r"\";
char[][] docs = GetFilesFromDir(dir ~ r"\", "*." ~ fromType, true);
if (docs.length == 0)
{
info.text = "Did not find any " ~ std.string.toupper(fromType) ~
" files in the directory... \n\nExiting...";
return;
}
foreach(char[] d; docs)
{
scope wDoc = wDocs.call("Open", d);//"Normal", false, 0);
char[] txt = std.path.getName(d); // original file ie. test if it was test.doc
txt ~= ".doc";
if (std.file.exists(txt))
std.file.remove(txt);
wDoc.call("SaveAs",
txt, // FileName
0, // FileFormat wdFormatDOC = 0
false, // LockComments
"", // Password
false, // AddToRecentFiles
"", // WritePassword
false, // ReadOnlyRecommended
false, // EmbedTrueTypeFonts
false, // SaveNativePictureFormat
false, // SaveFormsData
false, // SaveAsAOCELetter
65001, // Encoding 65001 is UTF8
false, // InsertLineBreaks
false, // AllowSubstitutions
0 // LineEnding Const wdCRLF = 0
);
wDoc.call("Close");
}
word.call("Quit");
Cảm ơn mã ví dụ. Điều này trả lời câu hỏi của tôi, mặc dù tôi hy vọng rằng D sẽ có một số hỗ trợ ngôn ngữ năng động cho các con thú như COM giống như các biến thể hỗ trợ Delphi có và từ khóa var trong C#. Có lẽ trong tương lai? Tôi đoán nó có vẻ như một cái gì đó mà không thuộc về một ngôn ngữ lập trình hệ thống, nhưng tôi tin rằng nó cần thiết cho các trường hợp như thế này và cho những thứ như invocation từ xa. Xem xét rằng D có những thứ như bộ sưu tập rác, một tính năng như thế này có lẽ phù hợp. Có một diễn đàn mà người ta có thể bỏ phiếu cho một cái gì đó như thế này? –
Sự hiểu biết của tôi là var không phải là một loại biến thể nó C# và chính xác như sử dụng tự động trong D (kiểu suy luận). D có http://digitalmars.com/d/2.0/phobos/std_variant.html –