এক্সেল শীট থেকে ডেটটাইম মান পড়া


89

যখন এক্সেল শীট থেকে ডেটটাইম টাইপ মানটি পড়ার চেষ্টা করা হয় তখন এটি দ্বিগুণ মান ফিরে আসবে example উদাহরণস্বরূপ যদি '2007-02-19 14:11:45.730'এই মানটি পড়তে চান তবে আমি একটি দ্বৈত প্রকারের মান পাচ্ছি urtherআর আমি টাইমস্প্যান ব্যবহার করে এই ডাবল মানটি রূপান্তর করছি, তবে সফলভাবে সম্পূর্ণ হয়নি কারণ আমি '2007-02-19 12:00:00 AM'
এখন কেবল এই মান পাচ্ছি আমি প্রথমটির মতো ঠিক একই তারিখের মান চাই। আমার কোডটি এরকম: -

TimeSpan datefromexcel = new TimeSpan(Convert.ToInt32((range.Cells[rCnt, cCnt] as Excel.Range).Value2), 0, 0, 0);

  DateTime inputdate = new DateTime(1900, 1, 1).Add(datefromexcel);

   arrrow2[cCnt - 1] = inputdate.ToString();

সাহায্য করুন!!! ধন্যবাদ

উত্তর:


226

আপনাকে ডেটটাইম ব্যবহার করে OLE অটোমেশন থেকে। নেট ফর্ম্যাটে রূপান্তর করতে হবে rom

double d = double.Parse(b);
DateTime conv = DateTime.FromOADate(d);

4
আপনি কি উত্তরটি দিয়ে ভোট দিতে এবং এটিকে সঠিক হিসাবে চিহ্নিত করার জন্য দয়া করবেন?
মিকারেল স্বেসনস

ভোট গ্রহণের জন্য 15 খ্যাতি দরকার তবে আমি নতুন ব্যবহারকারী হিসাবে আমার কেবল 6 টি আছে তবে আমি উত্তরটিকে সঠিক হিসাবে চিহ্নিত করেছি।
প্রণব

4
+1 স্পষ্টতই upvoting- এর জন্য নিষেধাজ্ঞাগুলি কারও নিজস্ব প্রশ্নের ক্ষেত্রে প্রযোজ্য নয়।
মাইক রোজেনব্লুম

4
আমি বুঝতে পেরেছি. কেবল দেখানো যে সকলেই আপনার সাথে একমত হবে না এই আচরণটি একটি বাগ।
jwg

4
এটি আমার সর্বাধিক সহজ উপায়। ধন্যবাদ.
অশোক

13

DateTime.FromOADateএক্সেল এবং। নেট এর মধ্যে রূপান্তর করার জন্য আপনি সম্ভবত পদ্ধতিটি ব্যবহার করে দেখতে পারেন ।


6

এক্সেল শীট থেকে ডেটটাইম মান পড়া: চেষ্টা করুন এটি কার্যকর হবে।

string sDate = (xlRange.Cells[4, 3] as Excel.Range).Value2.ToString();

double date = double.Parse(sDate);

var dateTime = DateTime.FromOADate(date).ToString("MMMM dd, yyyy");

4
উপায় দ্বারা কীভাবে আপনার কোড গৃহীত উত্তর থেকে পৃথক?
প্রণব

ডাউনভোটড এটি অদক্ষ, কক্ষটি তারিখের সময় কারণ, Value2একটি বক্সযুক্ত doubleমান প্রদান করে।
dbardakov

0

অথবা আপনি কেবল এক্সেল থেকে ডেটা পেতে ওলেডিবিডিটাএডাপ্টার ব্যবহার করতে পারেন


0

বিকল্পভাবে, যদি আপনার ঘরটি ইতিমধ্যে একটি আসল তারিখ হয়, কেবলমাত্র .ভ্যালু 2 এর পরিবর্তে মূল্য ব্যবহার করুন:

excelApp.Range[namedRange].Value
{21/02/2013 00:00:00}
    Date: {21/02/2013 00:00:00}
    Day: 21
    DayOfWeek: Thursday
    DayOfYear: 52
    Hour: 0
    Kind: Unspecified
    Millisecond: 0
    Minute: 0
    Month: 2
    Second: 0
    Ticks: 634970016000000000
    TimeOfDay: {00:00:00}
    Year: 2013

excelApp.Range[namedRange].Value2
41326.0

4
আমি মনে করি এটি এর চেয়ে কিছুটা জটিল। Valueএকটি ফিরে আসবে DateTimeআপনি একটি লিখেছিলেন DateTimeকরতে Valueকিন্তু একটি doubleআপনি একটি লিখেছিলেন DateTimeকরতে Value2
jwg

0

আমারও একই অবস্থা ছিল এবং এটি কাজ করার জন্য আমি নীচের কোডটি ব্যবহার করেছি ..

Aspose.Cells.LoadOptions loadOptions = new Aspose.Cells.LoadOptions(Aspose.Cells.LoadFormat.CSV);

Workbook workbook = new Workbook(fstream, loadOptions);

Worksheet worksheet = workbook.Worksheets[0];

dt = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxDisplayRange.RowCount, worksheet.Cells.MaxDisplayRange.ColumnCount, true);

DataTable dtCloned = dt.Clone();
ArrayList myAL = new ArrayList();

foreach (DataColumn column in dtCloned.Columns)
{
    if (column.DataType == Type.GetType("System.DateTime"))
    {
        column.DataType = typeof(String);
        myAL.Add(column.ColumnName);
    }
}


foreach (DataRow row in dt.Rows)
{
    dtCloned.ImportRow(row);
}



foreach (string colName in myAL)
{
    dtCloned.Columns[colName].Convert(val => DateTime.Parse(Convert.ToString(val)).ToString("MMMM dd, yyyy"));
}


/*******************************/

public static class MyExtension
{
    public static void Convert<T>(this DataColumn column, Func<object, T> conversion)
    {
        foreach (DataRow row in column.Table.Rows)
        {
            row[column] = conversion(row[column]);
        }
    }
}

আশা করি এটি 1 থেক্স_জক্সিনকে সহায়তা করবে


4
এই উত্তরটির ব্যবহারের জন্য Aspose.Cells পণ্যটির লাইসেন্স এবং সম্পর্কিত ইনস্টলেশন প্রয়োজন। এটি দুর্দান্ত পণ্য, তবে এমন কিছু নয় যাতে সমস্ত বিকাশকারীদের অ্যাক্সেস রয়েছে।
জেরেফেথ

0

আপনি এক্সেল শিট থেকে তারিখের মান পড়ার সাথে সম্পর্কিত অন্য থ্রেডে পোস্ট করা সাধারণ ফাংশনটি চেষ্টা করতে চাইতে পারেন ।

এটি সহজেই সেল থেকে পাঠ্য ইনপুট হিসাবে নেয় এবং আউটপুট হিসাবে ডেটটাইম দেয়।

। নেট ডেভলপমেন্ট সম্প্রদায়ের সুবিধার জন্য সরবরাহিত আমার নমুনা কোডের উন্নতি দেখে আমি খুশি হব।

সি # থ্রেডের লিঙ্কটি এখানে স্প্রেডশিট থেকে এক্সেল তারিখটি না পড়তে হবে


0

অন্য বিকল্প: যখন সংকলনের সময় ঘরের প্রকারটি অজানা এবং তারিখটি Range.Valueএকটি পছন্দসই DateTimeবস্তুটি ফেরত দেয় তাই ঘর বিন্যাস করা হয় ।


public static DateTime? GetAsDateTimeOrDefault(Range cell)
{
    object cellValue = cell.Value;
    if (cellValue is DateTime result)
    {
        return result;
    }
    return null;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.