আমি কীভাবে এক্সেলকে সর্বদা CSV ফাইলের সমস্ত কলামকে পাঠ্য হিসাবে আমদানি করতে পারি?


68

যদিও আমি এটি এড়াতে চেষ্টা করি, আমাকে মাঝে মাঝে এক্সেলে সিএসভি ফাইল খুলতে হবে। যখন আমি এটি করি, এটি সংখ্যার সমন্বিত কলামগুলি ফর্ম্যাট করে, যা সেগুলি আমার উদ্দেশ্যে অকেজো করে তোলে। আমি যতদূর বলতে পারি, আমদানি থেকে এটি থেকে রোধ করার একমাত্র উপায় হ'ল ফাইলটির নাম পরিবর্তন করা যাতে এক্সটেনশনটি .csv না হয় এবং প্রতিটি কলামের বিন্যাস স্বতন্ত্রভাবে নির্দিষ্ট করতে আমদানি উইজার্ডটি ব্যবহার করে। 50-60 কলামযুক্ত ফাইলগুলির জন্য, এটি অবৈধ।

যেহেতু ইন্টারনেটে এই প্রশ্নবিদ্ধ প্রশ্নের প্রতিটি উত্তর ফাইলটি খোলার পরে ফর্ম্যাট সংখ্যাগুলিকে আবার রূপান্তর করার কিছু উপায় প্রস্তাব দেয় (যা আমার পক্ষে কার্যকর হবে না - আমি সাধারণ সমস্যার সমাধান করতে চাই, কয়েকটি নির্দিষ্ট ক্ষেত্রে নয়) অথবা প্রতিটি কলামের বিন্যাসের ধরণটি ম্যানুয়ালি সিলেক্ট করে (যা আমি করতে চাই না), আমি একটি বিশ্বব্যাপী পছন্দ বা স্টাইল সেট করার একটি উপায় খুঁজছি যাতে খোলা সমস্ত সিএসভি ফাইলের সমস্ত কলাম সর্বদা পাঠ্য হিসাবে ফর্ম্যাট হয়। আমি উদ্ধৃতি সহ সংখ্যাগুলি "আর্মডিং" সম্পর্কেও জানি, তবে যে ফাইলগুলি আমি পাই তা সেভাবে আসে না এবং আমি আশা করছিলাম যে ফাইলগুলি প্রাক-প্রক্রিয়াজাতকরণ এড়াতে হবে যাতে এক্সেল সেগুলি স্ক্রু আপ না করে।

সেখানে কি একটি উপায় আছে কি বিশেষভাবে সর্বদা নিজে আমদানি করার সময় প্রতিটি কলামের প্রত্যেক সময় নির্বাচন ছাড়াই পাঠ্য হিসেবে খোলা CSV ফাইল মধ্যে সব কলাম বিন্যাস: এই?

আমি এক্সেল 2003 ব্যবহার করছি, তবে 2007 এর জন্য উত্তরগুলি গ্রহণ করব যদি এটিই আপনি জানেন।


1
আরে স্ক্রিপ্টিং গাই এক্সেলের মধ্যে সিএসভি আমদানি সম্পর্কে একটি ব্লগ নিবন্ধ করেছিলেন যা আপনার জন্য কিছু কার্যকর টিডবিট থাকতে পারে। পাওয়ারশেলের অভ্যন্তরে ডেটা অবজেক্টের সাথে খেলে আপনি যা চান তা করতে দেয়। এটি উত্তর হিসাবে পোস্ট করা হয়নি কারণ এটি মূলত কেবল একটি অফসাইট লিঙ্ক, তবে এটি আপনার কিছু ব্যবহার করতে পারে।
ম্যাট্রিক্স মোল

উত্তর:


7

এইটা কাজ করে:

Sub OpenCsvAsText(ByVal strFilepath As String)

    Dim intFileNo As Integer
    Dim iCol As Long
    Dim nCol As Long
    Dim strLine As String
    Dim varColumnFormat As Variant
    Dim varTemp As Variant

    '// Read first line of file to figure out how many columns there are
    intFileNo = FreeFile()
    Open strFilepath For Input As #intFileNo
    Line Input #intFileNo, strLine
    Close #intFileNo
    varTemp = Split(strLine, ",")
    nCol = UBound(varTemp) + 1

    '// Prepare description of column format
    ReDim varColumnFormat(0 To nCol - 1)
    For iCol = 1 To nCol
        varColumnFormat(iCol - 1) = Array(iCol, xlTextFormat)
        ' What's this? See VBA help for OpenText method (FieldInfo argument).
    Next iCol

    '// Open the file using the specified column formats
    Workbooks.OpenText _
            Filename:=strFilepath, _
            DataType:=xlDelimited, _
            ConsecutiveDelimiter:=False, Comma:=True, _
            FieldInfo:=varColumnFormat

End Sub

ব্যবহার:

OpenCsvAsText "C:\MyDir\MyFile.txt"

কমা-বিচ্ছিন্ন ফাইল এখন পাঠ্য হিসাবে ফর্ম্যাট সমস্ত কলাম সহ এক্সেল শীট হিসাবে খোলা আছে।

মনে রাখবেন যে @ ওয়েটমেলনের উইজার্ড সমাধানটি ঠিক কাজ করে, তবে আপনি যদি অনেকগুলি ফাইল খোলেন তবে আপনি, আমার মতো, প্রতিবার শিথিল হতে পারেন, শিফট-ক্লিক করার জন্য to০ কলামে স্ক্রোল করতে পারেন।

EDIT @GSerg নীচের মন্তব্যে বলেছেন যে এটি "কাজ করে না" এবং "স্পেস এবং নেতৃস্থানীয় শূন্যগুলি খায়"। আমি কেবল প্রশ্নের মন্তব্যে উদ্ধৃত করব, যা আরও বর্ণনামূলক:

অজানা কারণে, আপনি যদি স্পষ্টভাবে ভিবিএতে সমস্ত কলামের জন্য ফর্ম্যাটগুলি সরবরাহ করেন তবে ফাইল এক্সটেনশান সিএসভি হলে এক্সেল এটিকে উপেক্ষা করবে। আপনি এক্সটেনশানটি পরিবর্তন করার সাথে সাথে সেই একই কোডটি সঠিক ফলাফল দেবে।

সুতরাং উপরের কোডটি "কাজ করে", তবে এই হাস্যকর এক্সেলের আচরণের দ্বারা মারা যায়। আপনি যে কোনও উপায়েই এটি কেটে ফেলুন, আপনি এক্সটেনশনটিকে ".csv" ব্যতীত অন্য কিছুতে পরিবর্তন করতে আটকে গেছেন, দুঃখিত! এর পরে, আপনি বাসা থেকে মুক্ত।


1
কাজ করে না। স্পেস খায়, নেতৃস্থানীয়
জিরো


1
ব্যবহৃত পদ্ধতির Workbooks.OpenTextনকশা অনুসারে এর ত্রুটি রয়েছে (নীচে আমার উত্তর দেখুন)। QueryTablesপরিবর্তে ব্যবহার করুন।
নিক্সদা

71

এক্সেলে সিএসভি কীভাবে খুলবেন

ভাল পথ

  • এক্সেল → ডেটা external বাহ্যিক ডেটা পান with সহ সমস্ত কলাম নির্বাচন করুন Shiftএবং পাঠ্য নির্বাচন করুন

    Psর্ধ্বমুখী: কোনও মান ব্যতীত সমস্ত মানকে পাঠ্য হিসাবে সঠিকভাবে বিবেচনা করে

    ডাউনসাইড: একটি সাধারণ ডাবল-ক্লিকের চেয়ে আরও ধাপ

খারাপ পন্থা

  • ডাবল ক্লিক সহ একটি সিএসভি খুলুন বা ডায়ালগ সহ এক্সেলের খুলুন

    ডাউনসাইড: এক্সেলের অভ্যন্তরীণ সিএসভি হ্যান্ডলার পাঠ্যের পরিবর্তে একটি সূত্র হিসাবে একটি শীর্ষস্থানীয় -বা =সাইন দিয়ে মানগুলি ভুল ব্যাখ্যা করে

    ডাউনসাইড: 0001এক্সেলের স্বয়ংক্রিয় সনাক্তকরণ কলাম ফর্ম্যাটের কারণে আপনি বাইনারি মান থেকে শীর্ষস্থানীয় শূন্যগুলি হারাবেন

ভাল উপায় (ভিবিএর জন্য)

  • কোয়েরি টেবিলগুলি ব্যবহার করুন (ভিবিএ প্রতিপক্ষের Get external data) → উদাহরণ কোড

    Psর্ধ্বমুখী: কোনও মান ব্যতীত সমস্ত মানকে পাঠ্য হিসাবে সঠিকভাবে বিবেচনা করে

    ডাউনসাইড: OpenTextপদ্ধতির চেয়ে কিছুটা বেশি কোড

খারাপ উপায় (ভিবিএর জন্য)

  • Workbooks.OpenTextপদ্ধতি → উদাহরণ কোড ব্যবহার করুন

    ডাউনসাইড: এই পদ্ধতিটি এখনও তার সমস্ত ত্রুটিগুলি সহ এক্সেলের অভ্যন্তরীণ সিএসভি আমদানি হ্যান্ডলারটি ব্যবহার করছে

    ডাউনসাইড: অতিরিক্তভাবে, এক্সটেনশনটি সিএসভি হলে এর fieldinfoপরামিতি OpenTextউপেক্ষা করা হয়। সাধারণত, এই প্যারামিটারটি আপনাকে প্রতিটি কলাম বিন্যাস চয়ন করতে দেয়, তবে এক্সটেনশনটি সিএসভি হয় না। স্ট্যাক ওভারফ্লোতে আপনি এই আচরণ সম্পর্কে আরও পড়তে পারেন

    যদি সোর্স ফাইলে আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকে তবে অস্থায়ীভাবে সিএসভি থেকে টিএক্সটি এবং তারপরে সিএসভিতে উত্স বর্ধনের নামকরণ করা একটি বৈধ কাজ

অতিরিক্ত পদ্ধতি

  • আপনার সিএসভি তৈরি করে এমন উত্সটিতে যদি আপনার অ্যাক্সেস থাকে তবে আপনি সিএসভি সিনট্যাক্সটি পরিবর্তন করতে পারেন।
    ডাবল উদ্ধৃতি চিহ্নের সাথে প্রতিটি মান সংযুক্ত করুন এবং প্রতি মান হিসাবে একটি সমান চিহ্ন হিসাবে উপসর্গ ="00001"বা প্রতিটি মান একটি ট্যাব প্রিপেন্ড করুন। দুটি উপায়ই এক্সেলকে মানটিকে পাঠ্য হিসাবে বিবেচনা করতে বাধ্য করবে

    আসল সিএসভি সামগ্রী
    এখানে চিত্র বর্ণনা লিখুন

    ডাবল ক্লিকের মাধ্যমে খুললে এক্সেলের সিএসভি
    এখানে চিত্র বর্ণনা লিখুন

    এক্সেল দ্বারা লাইন 2 (ডাবল উদ্ধৃতি পদ্ধতি) এবং লাইন 3 (ট্যাব পদ্ধতি) কীভাবে পরিবর্তন করা যায় তা নোট করুন

  • নোটপ্যাডে সিএসভি খুলুন এবং এক্সেলটিতে সমস্ত মান অনুলিপি করুন এবং আটকান। তারপরে ডেটা ব্যবহার করুন - পাঠ্য থেকে কলামগুলিকে
    ডাউনসাইড: সাধারণ থেকে পিছনে পাঠ্যে কলামের ফর্ম্যাট পরিবর্তন করার জন্য কলামগুলিতে পাঠ্য অসঙ্গতিপূর্ণ ফলাফল দেয়। যদি মানটিতে -চারপাশে অক্ষর থাকে (যেমন "= E1-S1"), এক্সেল সেই মানটিকে একাধিক কলামে বিভক্ত করার চেষ্টা করে। সেই ঘরের ডানদিকে অবস্থিত মানগুলি ওভাররাইট হয়ে যেতে পারে

    ( এক্সেল 2007 এবং 2013 এর মধ্যে পাঠ্য কলামে আচরণটি কোথাও পরিবর্তিত হয়েছিল যাতে এটি আর কাজ করে না)


এক্সেল অ্যাড-ইন সিএসভি খুলতে এবং পাঠ্য হিসাবে সমস্ত মান আমদানি করে

CSV আমদানি ক্রিয়াকে সহজ করার জন্য এটি একটি এক্সেল প্লাগ-ইন।
প্রধান সুবিধা: এটি একটি ক্লিকের সমাধান এবং ব্যবহারগুলি QueryTables, বহিরাগত ডেটা পাওয়ার পিছনে একই বুলেটপ্রুফ পদ্ধতি

  • এটি এক্সেলে একটি নতুন মেনু কমান্ড যুক্ত করে যা আপনাকে সিএসভি এবং টিএক্সটি ফাইলগুলি আমদানি করতে দেয়। সমস্ত মান বর্তমানে নির্বাচিত ঘরে শুরু হওয়া সক্রিয় শীটে আমদানি করা হয়
  • উইন্ডোজ এবং ম্যাকের সমস্ত অফিস সংস্করণে এক্সেল অ্যাড-ইন উপলব্ধ
  • পুরো অ্যাড-ইনটিতে কেবলমাত্র 35 টি লাইনের কোড রয়েছে। আপনি যদি আগ্রহী হন তবে মন্তব্য করা উত্স কোডটি পরীক্ষা করুন
  • ব্যবহৃত সিএসভি তালিকা বিভাজক (কমা বা সেমিকোলন) আপনার স্থানীয় এক্সেল সেটিংস থেকে নেওয়া হয়েছে
  • এনকোডিংটি ইউটিএফ -8 এ সেট করা আছে

স্থাপন

  1. অ্যাড-ইন ডাউনলোড করুন এবং এটি আপনার অ্যাড-ইন ফোল্ডারে সংরক্ষণ করুন:%appdata%\Microsoft\AddIns
  2. এক্সেল খুলুন এবং অ্যাড-ইন সক্রিয় করুন: File tab → Options → Add-Ins → Go Toএবং নির্বাচন করুনImportCSV.xla
  3. ভিবিএ ম্যাক্রোগুলি সক্ষম করুন: File tab → Options → Trust Center → Trust Center Settings → Macro Settings → Enable all macros
  4. এক্সেল পুনরায় চালু করুন

আপনি অ্যাড-ইনস নামে একটি নতুন মেনু বার এন্ট্রি দেখতে পাবেন এবং আমদানি কথোপকথনের ঝামেলা ছাড়াই আপনার সিএসভি ফাইলগুলি দ্রুত খোলার জন্য আপনি এই বোতামটি ব্যবহার করেন

এখানে চিত্র বর্ণনা লিখুন


উইন্ডোজ এক্সপ্লোরার থেকে সরাসরি সিএসভি খুলতে পাওয়ারশেল স্ক্রিপ্ট

আপনি সিএসভি ফাইলগুলি খোলার জন্য পাওয়ারশেল স্ক্রিপ্টটি ব্যবহার করতে পারেন এবং সেগুলি স্বয়ংক্রিয়ভাবে এক্সলে স্থানান্তর করতে পারেন। স্ক্রিপ্টটি নিঃশব্দে এক্সেলের পাঠ্য আমদানি পদ্ধতি ব্যবহার করে যা সর্বদা মানকে পাঠ্য হিসাবে এবং বোনাস হিসাবে, ইউটিএফ -8 এনকোডিং পরিচালনা করে

  1. একটি নতুন পাঠ্য ফাইল তৈরি করুন এবং নীচের স্ক্রিপ্টটি পেস্ট করুন। একটি মন্তব্য সংস্করণ এখানে পাওয়া যাবে
$CSVs = @()
$args.ForEach({
    If ((Test-Path $_) -and ($_ -Match "\.csv$|\.txt$")) {
        $CSVs += ,$_
    } 
})

if (-Not $null -eq $CSVs) {

    $excel = New-Object -ComObject excel.application 
    $excel.visible = $true
    $excel.SheetsInNewWorkbook = $CSVs.Count    
    $workbook = $excel.Workbooks.Add()

    for ($i=0; $i -lt $CSVs.Count; $i++){

        $csv = Get-Item $CSVs[$i]
        $worksheet = $workbook.worksheets.Item($i + 1)
        $worksheet.Name = $csv.basename

        $TxtConnector = ("TEXT;" + $csv.fullname)
        $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
        $query = $worksheet.QueryTables.item($Connector.name)
        $query.TextFilePlatform = 65001
        $query.TextFileTextQualifier = 1
        $query.TextFileOtherDelimiter = $Excel.Application.International(5) 
        $query.TextFileParseType  = 1
        $arrFormats = ,2 * $worksheet.Cells.Columns.Count
        $query.TextFileColumnDataTypes = $arrFormats
        $query.AdjustColumnWidth = 1
        $query.Refresh()
        $query.Delete()
    }
}
  1. এটি কোথাও সংরক্ষণ করুন C:\my\folder\myScript.ps1। (এক্সটেনশন দ্রষ্টব্য .ps1)
    • খুলুন আপনার চালায় ফোল্ডারের মাধ্যমে WinR» shell:sendto» Enter
  2. ডান ক্লিকের মাধ্যমে একটি নতুন শর্টকাট তৈরি করুন »নতুন» শর্টকাট এবং এই লাইনটি পেস্ট করুন। আপনি নিজের স্ক্রিপ্টটি যেখানে রেখেছেন সেখানে নিজের পথ পরিবর্তন করতে ভুলবেন না। শর্টকাটটির নাম দিন, উদাহরণস্বরূপ, এক্সেল

"% সিস্টেমরূট% \ system32 \ উইন্ডোজপাওয়ারশেল \ v1.0 \ পাওয়ারশেল.এক্সে" -নোপ্রোফাইল -অন্টি ইন্টারেক্টিভ-উইন্ডো স্টাইল লুকানো-ফাইল "সি: \ আমার \ ফোল্ডার \ মাইস্ক্রিপ্ট.পিএস 1"

এখন আপনি (একাধিক) সিএসভি নির্বাচন করতে পারেন এবং সেগুলি মাধ্যমে এক্সলে খুলতে পারেন Right-click » SendTo » Excel


1
অ্যাড-ইন অফিস 2003 এবং 2013
নিক্সদা

শীর্ষস্থানীয় "সেরা উপায়" হ'ল এক-অফ আমদানির জন্য আমার যা প্রয়োজন। ভিবিএর সাথে জগাখিচির দরকার নেই এবং কী কী কলামগুলি তারিখ / সংখ্যা হিসাবে নেওয়া হয় তা নিয়ন্ত্রণ করতে পারে (বাকী পাঠ্য হিসাবে নেওয়া হয়েছে)। আমি সিএসভিতে ডাবল ক্লিক করলে এক্সেল এই আমদানি উইজার্ডটি খোলার প্রস্তাব দিচ্ছিল।
এডিটিসি

@ ভাদজিম হ্যালো, মৃত লিঙ্কগুলি ঠিক করার জন্য আপনার প্রচেষ্টাকে আমি প্রশংসা করি। প্রকৃতপক্ষে ge.tt গত মাসগুলিতে কিছু সমস্যা তৈরি করে। তবে আমি মনে করি যে আমি সমস্ত সমস্যাগুলি স্থির করেছি এবং পুরানো মূল লিঙ্কগুলি আবার কাজ করা উচিত। আমি জানি না কেন গুগল ক্রোম ge.tt. থেকে কিছু ডাউনলোড করার আগে সতর্ক করে দেয়। তবে অন্যান্য সমস্ত ব্রাউজারগুলি স্বাভাবিকভাবে কাজ করে এবং আমি আপনাকে নিশ্চয়তা দিতে পারি যে তারা কোনও ম্যালওয়্যার নয়
নিক্সদা

@ নিক্সদা, লিঙ্কগুলি পুনরুদ্ধার করার জন্য এবং দুর্দান্ত উত্তরের জন্য আপনাকে ধন্যবাদ
ভাদজিম

@nixda ge.tt- এর লিঙ্কগুলি আবার নষ্ট হয়ে গেছে। বেশিরভাগ বলে যে তারা উপলব্ধ নেই কারণ মালিক টিএসএস লঙ্ঘন করেছেন। তবে ওপেনসিএসভি.এক্সির একটিতে বলা হয়েছে " পরিষেবার শর্তাদি লঙ্ঘন করার কারণে এই ফাইলগুলি আর উপলব্ধ নেই।" আমাকে জিজ্ঞাসা করতে কোনটি নিয়ে আসে, আপনি কি আমদানি-মাইসিএসভি এক্সেল ফাংশনের লেখক? (সোর্সকোডটি এখনও পেস্টবিনে উপলভ্য) এটি একটি দুর্দান্ত সরঞ্জাম I আমি এটি কাজে ব্যবহার করি এবং এটি অন্যদের কাছে প্রস্তাব দিয়েছি। তবে লেখককে যথাযথভাবে ক্রেডিট দেওয়ার জন্য আমি কোডটির উত্স সম্পর্কে আগ্রহী।
গ্লেনফ্রোম আইওয়া 20

5

আপনি প্রথমে একটি xlsx খোলার চেষ্টা করতে পারেন, তারপরে একটি ডেটা সংযোগ তৈরি করে এবং .csv আমদানি করতে পারেন। সীমানাঙ্কিত "কমা" নির্বাচন করুন, তারপরে সমস্ত কলামগুলিকে "জেনারেল" না করে পাঠ্য হিসাবে বিবেচনা করার বিকল্পটি নির্বাচন করুন।

সম্পাদনা: ওহ, আমি পুরোপুরি প্রশ্নটি পড়িনি। আমদানি উইজার্ডে, আপনি যে পাঠ্য হিসাবে আমদানি করতে চান সেই প্রথম কলাম শিরোনামটি নির্বাচন করুন, চূড়ান্ত কলামের শিরোনামে স্ক্রোল করুন এবং শিফট + ক্লিক করুন শিরোনাম। তারপরে "পাঠ্য" রেডিয়াল বিকল্পটি নির্বাচন করুন।


2
হ্যাঁ, এটি দুর্দান্তভাবে কাজ করে - যতক্ষণ না ফাইলের এক্সটেনশান ".csv" না হয়। +1
জিন-ফ্রান্সোইস কর্পেট

4

আপনি নিম্নলিখিতগুলি করেন তবে ওয়েটমেলনের পরামর্শ কার্যকর (এমনকি। CSV সহ) কাজ করে:

  1. খালি ওয়ার্কবুক বা ওয়ার্কশিটে এক্সেল খুলুন
  2. পাঠ্য থেকে ডেটা> [বাহ্যিক ডেটা পান] ক্লিক করুন
  3. ওয়েটমেলনের বর্ণনা অনুসারে "পাঠ্য আমদানি উইজার্ড" ব্যবহার করুন (কমা বিস্মৃত, প্রথম কলামটি নির্বাচন করুন, শিফট + শেষ কলামটি ক্লিক করুন, পাঠ্যে সবকিছু সেট করুন)।

আমি জানি এটি আরও পদক্ষেপ, তবে কমপক্ষে এটি আমাকে এক্সটেনশন পরিবর্তন না করেই এইভাবে CSV গুলি খুলতে দেয়


2

সতর্ক থেকো!

ম্যানুয়াল পদ্ধতিটি ব্যবহার করার সময় "এক্সেল → ডেটা external বাহ্যিক ডেটা পান all সমস্ত কলাম নির্বাচন করুন এবং পাঠ্য চয়ন করুন" ......

এটি কেবলমাত্র কলামগুলিকে "প্রথম সারিতে ডেটা রয়েছে" (সাধারণত একটি শিরোনাম সারি) পাঠ্যে সেট করবে। এই উইজার্ডটি আপনাকে ডানদিকে কলামগুলি আরও দেখায় না যা নীচে আরও ডেটা থাকতে পারে তবে প্রথম সারিতে নয়। উদাহরণ স্বরূপ:

রো 1 কল 1, রো 1 কল 2, রো 1 কল 3

রো 2 কল 1, রো 2 কল 2, রো 2 কল 3, রো 2 কল 4

আপনি আমদানি উইজার্ডে কর্নেল 4 কখনই দেখতে পাবেন না তাই আপনি আমদানির আগে সাধারণ থেকে পাঠ্য বিন্যাসে পরিবর্তন করার বিকল্প পাবেন না !!!!


1
একটি ভাল সতর্কতা, সময়ের 99.9999% থেকে, লোকেরা আমদানি উইজার্ডে স্ক্রোল করে না এবং তারপরেও সমস্ত কলামগুলি ধরা খুব শক্ত। তবে, প্রযুক্তিগতভাবে, আপনি আমদানি উইজার্ডে থাকা অবস্থায় নীচে স্ক্রোল করতে পারেন এবং প্রথম সারিতে ডেটা নেই এমন অতিরিক্ত কলামগুলি ধরতে পারেন।
গ্লেনফ্রোম আইওয়া

1

এখানে জিন-ফ্রান্সোয়েস কর্বেট দ্বারা পোস্ট করা কোডের বিকল্প পদ্ধতিটি রয়েছে

এই পদ্ধতিটি পাঠ্য হিসাবে ফর্ম্যাট করা সমস্ত কলাম সহ সিএসভি ফাইলটি এক্সেলের মধ্যে আমদানি করবে

Public Sub ImportCSVAsText()
    Dim TempWorkbook As Workbook
    Dim TempWorksheet As Worksheet
    Dim ColumnCount As Integer
    Dim FileName As Variant
    Dim ColumnArray() As Integer

    'Get the file name
    FileName = Application.GetOpenFilename(FileFilter:="All Files (*.*),*.*", FilterIndex:=1, Title:="Select the CSV file", MultiSelect:=False)

    If FileName = False Then Exit Sub

    Application.ScreenUpdating = False

    'Open the file temporarily to get the count of columns
    Set TempWorkbook = Workbooks.Open(FileName)
    ColumnCount = TempWorkbook.Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Column
    TempWorkbook.Close SaveChanges:=False

    'Resize the array to number of columns
    ReDim ColumnArray(1 To ColumnCount)

    For i = 1 To ColumnCount
        ColumnArray(i) = xlTextFormat
    Next i

    Set TempWorkbook = Workbooks.Add
    Set TempWorksheet = TempWorkbook.Sheets(1)

    Application.DisplayAlerts = False
    TempWorkbook.Sheets(2).Delete
    TempWorkbook.Sheets(2).Delete
    Application.DisplayAlerts = True

    With TempWorksheet.QueryTables.Add("TEXT;" & FileName, TempWorksheet.Cells(1, 1))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1251
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = ColumnArray
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

End Sub

সুপার ইউজারে আপনাকে স্বাগতম, নতুন উত্তর যুক্ত করার পরিবর্তে আপনার কার্বেটের উত্তরটি সম্পাদনা করা উচিত ছিল এবং এটি উন্নত করা উচিত ছিল। আমি বুঝতে পারি যে এখনও এটি করার মতো আপনার যথেষ্ট সুনাম নেই, তবে আপনি যেখানে পরিবর্তনগুলি পড়তে বলবেন সেখানে মন্তব্যগুলি আপনার পরিবর্তনগুলিকে যুক্ত করতে পারেন।
ভ্লাস্টিমিল ওভেক

0

আপনি যদি সর্বদা একই ডেটা আমদানি করে থাকেন (ধ্রুবক রেকর্ড ফর্ম্যাট, লেআউট, ইত্যাদি ...) আপনি একটি আমদানি নির্দিষ্ট ব্যবহার করে একটি অ্যাক্সেস ম্যাক্রো লিখতে পারেন এবং তারপরে ডেটাটি এক্সেলের কাছে ফেরত দিতে পারেন। এই সময় হতে পারে। অন্য যেভাবে আমি এটি করেছি তা হ'ল ভিবিএ ব্যবহার করা এবং কার্যপত্রকটিতে ডেটা একবারে একটি রেকর্ডে পড়া এবং এটি পড়ার সাথে সাথে এটি পার্স করা। আমি যতদূর জানি এক্সেলে আমদানির সময় একটি ডিফল্ট ফর্ম্যাট সেট করার কোনও উপায় নেই এবং এমনকি যদি আপনি এটি পরবর্তী ফাইল টাইপকে পার্স করার চেষ্টা করে তবে সমস্যা হতে পারে।


1
এই জিনিসটি এখানে রয়েছে - আমি যখন এটিকে আমদানি করি তখন কলামগুলির মধ্যে কলামের মধ্যে থাকা পাঠ্য স্ট্রিংটি বাদ দিয়ে আর কোনও পার্সিংয়ের চেষ্টা করি না। যদি আমার এটি কোনও নির্দিষ্ট উপায়ে ফর্ম্যাট করার প্রয়োজন হয়, তবে আমি এটি করতে পারি (যেমন তারিখের স্ট্রিংয়ের তারিখগুলি তৈরি করা ইত্যাদি) তবে আমার প্রাথমিকভাবে কেবল ডেটা বাকি থাকতে হবে। কেন যে এত কঠিন করা উচিত?
উইলিয়াম গন

0

অনুরোধ হিসাবে, উত্তর হিসাবে আমার মন্তব্য জমা (আরও কিছু তথ্য যুক্ত সহ):

আরে স্ক্রিপ্টিং গাই এক্সেলের মধ্যে সিএসভি আমদানি সম্পর্কে একটি ব্লগ নিবন্ধ করেছিলেন যা আপনার জন্য কিছু কার্যকর টিডবিট থাকতে পারে। পাওয়ারশেলের অভ্যন্তরে ডেটা অবজেক্টের সাথে খেলে আপনি যা চান তা করতে দেয়।

যদিও নিবন্ধটি কেবলমাত্র কোষগুলিতে ডেটা আমদানির কথা উল্লেখ করেছে যা সংখ্যার ফর্ম্যাটটি ছেড়ে যেতে পারে তবে এক্সেল কমবজেক্ট বৈশিষ্ট্য এবং উপায়ে কোষগুলিকে কাঁচা পাঠ্য হিসাবে প্রবেশ করার জন্য পরিবর্তিত কিছু পদ্ধতি (বা জোর করে) ব্যবহার করা সম্ভব হতে পারে or আমদানির আগে বা পরে পাঠ্যগুলিতে ঘরগুলির বিন্যাস)।


0

অজানা কারণে, আপনি সমস্ত কলামের জন্য পরিষ্কারভাবে ফর্ম্যাট সরবরাহ করলেও, ফাইল এক্সটেনশান সিএসভি হলে এক্সেল এটিকে উপেক্ষা করবে।

কিছু বিকল্প:

  • ওয়েটমেলনের পরামর্শ অনুসারে ডেটা আমদানি করার জন্য একটি কোয়েরি তৈরি করুন ।
    অসুবিধা: আপনি একটি 64-বিট মেশিনে সিএসভি ডাটাবেস ড্রাইভার মিস করতে পারেন।

  • জিনের কোড ব্যবহার করুন , তবে অস্থায়ী ফোল্ডারে ফাইলটি অনুলিপি করা এবং অনুলিপিটির এক্সটেনশন পরিবর্তন করুন।
    অসুবিধা: মূল ফাইলটির কোনও লিঙ্ক নেই (সংরক্ষণের ফলে অনুলিপিটি মুছে যাবে); আপনাকে পরে অনুলিপিটি ম্যানুয়ালি মুছতে হবে। তবুও, আপনি আসল সিএসভি থেকে ম্যানুয়ালি সংরক্ষণ করতে পারেন।

  • নোটপ্যাড করা CSV খুলুন, Ctrl+A, Ctrl+C, এক্সেল, তারপর ডাটা পেস্ট - কলাম পাঠ্য থেকে, তারপর এটি স্বাভাবিক জাদুকর যেখানে আপনি এক বারেই পাঠ্য থেকে সব কলাম সেট করতে পারেন না। এটি পূর্ববর্তী বিকল্পের আলাদা স্বাদ, কারণ এটি এক্সেল থেকে মূল্যবান এক্সটেনশনটিও আড়াল করে।
    অসুবিধা: ম্যানুয়াল।

  • একটি খুব সাধারণ ভিবিএ লুপ রয়েছে যা পুরো ফাইলটি মেমরিতে পড়ে এবং সেটিকে শীট করে ঘরে রেখে শীটটিতে রাখে।
    অসুবিধা: ধীর, কুশ্রী


"মূল [CSV] ফাইলটির কোনও লিঙ্ক" কি এই সমস্ত পদ্ধতির অসুবিধা নয়? আমি একটি অস্থায়ী ফোল্ডারে অনুলিপি করতে এবং সেখানে এক্সটেনশন পরিবর্তন করার ধারণাটি পছন্দ করি ... অনুলিপিটি খুলার সাথে সাথে মূলটি (সিএসভি হিসাবে) ওভাররাইটও করতে পারলাম।
জিন-ফ্রানসোয়া কার্বেট

@ জিন-ফরাসোইস কর্বেট, আমি এক্সিল ২০১০-তে CSV-র প্রসারিত .csv ফাইলগুলি আমদানি করার জন্য আমদানি উইজার্ডটি সর্বদা ব্যবহার করি I সম্ভবত এটি এক্সেলের পুরানো সংস্করণগুলির সাথে একটি সমস্যা ছিল?
গ্লেনফ্রোম আইওয়া

-2

যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে এখানে বর্ণিত হিসাবে এটি আটকানো-বিশেষে ট্রান্সপোজ অপশনটি ব্যবহার করে সহজেই সমাধান করা হবে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.