تحويل ملفات CSV، TSV و TXT إلى Excel

فتح ملفات CSV

تحتوي ملفات القيم المفصولة بفواصل (CSV) على سجلات يتم فصل قيمها أو تقسيمها بواسطة فواصل. في ملفات CSV، يتم تخزين البيانات في تنسيق جدولي يحتوي على حقول مفصولة بحرف الفاصلة ومحاطة بحرف الاقتباس المزدوج. إذا احتوت قيمة الحقل على حرف الاقتباس المزدوج فيجب تهريبها بزوج من أحرف الاقتباس المزدوج. يمكنك أيضًا استخدام Microsoft Excel لتصدير بيانات جدول البيانات الخاصة بك إلى ملف CSV.

لفتح ملفات CSV، استخدم فئة LoadOptions وحدد قيمة CSV المحددة مسبقًا في فئة التعداد LoadFormat.

مثال

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(OpeningCSVFiles.class) + "loading_saving/";
// Opening CSV Files
// Creating and CSV LoadOptions object
LoadOptions loadOptions4 = new LoadOptions(LoadFormat.CSV);
// Creating an Workbook object with CSV file path and the loadOptions
// object
Workbook workbook6 = new Workbook(dataDir + "Book_CSV.csv", loadOptions4);
// Print message
System.out.println("CSV format workbook has been opened successfully.");

فتح ملفات CSV واستبدال الأحرف غير الصحيحة

في Excel، عند فتح ملف CSV مع أحرف خاصة، يتم استبدال الأحرف تلقائيًا. ويتم نفس الأمر بواسطة واجهة برمجة التطبيقات Aspose.Cells التي يتم توضيحها في المثال البرمجي المعطى أدناه.

مثال

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Source directory
String dataDir = Utils.getSharedDataDir(OpeningCSVFilesAndReplacingInvalidCharacters.class) + "LoadingSavingConvertingAndManaging/";
LoadOptions loadOptions = new LoadOptions(LoadFormat.CSV);
//Load CSV file
Workbook workbook = new Workbook(dataDir + "[20180220142533][ASPOSE_CELLS_TEST].csv", loadOptions);
System.out.println(workbook.getWorksheets().get(0).getName()); // (20180220142533)(ASPOSE_CELLS_T
System.out.println(workbook.getWorksheets().get(0).getName().length()); // 31
System.out.println("CSV file opened successfully!");

فتح ملفات CSV باستخدام محلل الجاري التفضيلي

غالبًا ما ليس من الضروري استخدام إعدادات محلل افتراضية لفتح ملفات CSV. في بعض الأحيان، قد لا ينتج استيراد ملف CSV الإخراج المتوقع مثل عدم تطابق تنسيق التاريخ المتوقع أو معالجة الحقول الفارغة بشكل مختلف. لهذا الغرض، تتاح فئة TxtLoadOptions.PreferredParsers لتوفير محلل مفضل لتوصيل مختلف أنواع البيانات حسب الحاجة. يوضح الكود عينة التالي استخدام المحلل المفضل.  

يمكن تنزيل ملف الشفرة المصدري وملفات الإخراج التجريبية من الروابط التالية لاختبار هذه الميزة.

samplePreferredParser.csv

outputsamplePreferredParser.xlsx

مثال

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
class TextParser implements ICustomParser
{
@Override
public Object parseObject(String s) {
return s;
}
@Override
public String getFormat() {
return "";
}
}
class DateParser implements ICustomParser {
@Override
public Object parseObject(String s) {
Date myDate = null;
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
try {
myDate = formatter.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return myDate;
}
@Override
public String getFormat() {
return "dd/MM/yyyy";
}
}
public class OpeningCSVFilesWithPreferredParser {
//Source directory
private static String sourceDir = Utils.Get_SourceDirectory();
private static String outputDir = Utils.Get_OutputDirectory();
public static void main(String[] args) throws Exception {
// Initialize Text File's Load options
TxtLoadOptions oTxtLoadOptions = new TxtLoadOptions(LoadFormat.CSV);
// Specify the separatot character
oTxtLoadOptions.setSeparator(',');
// Specify the encoding scheme
oTxtLoadOptions.setEncoding(Encoding.getUTF8());
// Set the flag to true for converting datetime data
oTxtLoadOptions.setConvertDateTimeData(true);
// Set the preferred parsers
oTxtLoadOptions.setPreferredParsers(new ICustomParser[] { new TextParser(), new DateParser() });
// Initialize the workbook object by passing CSV file and text load options
Workbook oExcelWorkBook = new Workbook(sourceDir + "samplePreferredParser.csv", oTxtLoadOptions);
// Get the first cell
Cell oCell = oExcelWorkBook.getWorksheets().get(0).getCells().get("A1");
// Display type of value
System.out.println("A1: " + getCellType(oCell.getType()) + " - " + oCell.getDisplayStringValue());
// Get the second cell
oCell = oExcelWorkBook.getWorksheets().get(0).getCells().get("B1");
// Display type of value
System.out.println("B1: " + getCellType(oCell.getType()) + " - " + oCell.getDisplayStringValue());
// Save the workbook to disc
oExcelWorkBook.save(outputDir + "outputsamplePreferredParser.xlsx");
System.out.println("OpeningCSVFilesWithPreferredParser executed successfully.\r\n");
}
private static String getCellType(int type){
if(type == CellValueType.IS_STRING){
return "String";
} else if(type == CellValueType.IS_NUMERIC){
return "Numeric";
} else if(type == CellValueType.IS_BOOL){
return "Bool";
} else if(type == CellValueType.IS_DATE_TIME){
return "Date";
} else if(type == CellValueType.IS_NULL){
return "Null";
} else if(type == CellValueType.IS_ERROR){
return "Error";
} else{
return "Unknown";
}
}

فتح ملفات TSV (مفصولة بالألسنة)

تحتوي ملفات TSV على بيانات جدولية ولكن بدون أي تنسيق. يتم ترتيب البيانات في صفوف وأعمدة مثل الجداول وأوراق العمل. بإيجاز، ملف TSV هو نوع خاص من ملف نصي عادي مع علامة تبويب بين كل عمود في النص.

لفتح ملفات مقسمة بواسطة العلامات، يجب على المطورين استخدام الفئة LoadOptions وحدد القيمة TSV المحددة مسبقًا في فئة التعداد LoadFormat.

مثال

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(OpeningTabDelimitedFiles.class) + "loading_saving/";
// Creating and TAB_DELIMITED LoadOptions object
LoadOptions loadOptions5 = new LoadOptions(LoadFormat.TSV);
// Creating an Workbook object with Tab Delimited text file path and the
// loadOptions object
Workbook workbook7 = new Workbook(dataDir + "Book1TabDelimited.txt", loadOptions5);
// Print message
System.out.println("Tab Delimited workbook has been opened successfully.");

مواضيع متقدمة