Práce s .json soubory... – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce s .json soubory... – .NET – Fórum – Programujte.comPráce s .json soubory... – .NET – Fórum – Programujte.com

 

Montezo
~ Anonymní uživatel
188 příspěvků
6. 1. 2022   #1
-
0
-

   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.OleDb;
using System.Data.Common;
using Newtonsoft.Json;
using System.IO;

namespace ukol
{
    class Program
    {
        static void Main(string[] args)

        {
            var pathToExcel = @"c:\priklad.xlsx";
            var sheetName = "q";
            var connectionString = String.Format(@"
            Provider=Microsoft.ACE.OLEDB.12.0;
            Data Source={0};
            Extended Properties=""Excel 12.0 Xml;HDR=YES""
        ", pathToExcel);

            using (var conn = new OleDbConnection(connectionString))
            {
                conn.Open();

                var cmd = conn.CreateCommand();
                cmd.CommandText = String.Format(
                    @"SELECT * FROM [{0}$]",
                    sheetName
                    );

                using (var rdr = cmd.ExecuteReader())
                {

                    var query =
                        (from DbDataRecord row in rdr
                         select row).Select(x =>
                         {


                             Dictionary<string, object> item = new
    Dictionary<string, object>();
                             for (int i = 0; i < 20; i++)  // inicializátor: přiřadí proměnné i hodnotu 0; podmínka: dokud je i menší než 20; inkrement: dokud platí podmínka, zvyš i o jedna
                             {
                                 item.Add(rdr.GetName(i), x[i]);

                             }
                             return item;

                         });

                    var json = JsonConvert.SerializeObject(query);  // serializuj objekt do souboru JSON
                    var result = json;
                    File.WriteAllText("vystup.json", json);  // data jsou zapsána do souboru vystup.json
                    Console.WriteLine(result);
                    foreach (string file in Directory.EnumerateFiles(".", "*.xlsx"))
                    {
                        string contents = File.ReadAllText(file);
                    }

                }
            }
        }
        }
}
Tak, a jak udělat, aby se mi ten "výstup" zapsal do .json souboru?  :)
Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1851 příspěvků
6. 1. 2022   #2
-
0
-

Já si myslím, že by to takhle mohlo fungovat. Co se ti tam zapíše a co chceš jinak?

Nahlásit jako SPAM
IP: 213.211.51.–
Montezo
~ Anonymní uživatel
188 příspěvků
6. 1. 2022   #3
-
0
-

No, chtěl bych tento "výstup" mít zapsaný do toho souboru .json.  :|

https://postimg.cc/fVLv5YsS

Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1851 příspěvků
6. 1. 2022   #4
-
0
-

   

var json = JsonConvert.SerializeObject(query);  // serializuj objekt do souboru JSON
var result = json;
File.WriteAllText("vystup.json", json);  // data jsou zapsána do souboru vystup.json
Console.WriteLine(result);

Do souboru zapisuješ stejnou hodnotu, jakou vypisuješ na konzoli. Pořád nechápu v čem je problém.

Nahlásit jako SPAM
IP: 213.211.51.–
Montezo
~ Anonymní uživatel
188 příspěvků
6. 1. 2022   #5
-
0
-

Problém je, že ten soubor tam není. Soubor "priklad.json" nebyl na konci běhu programu vytvořen.

Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1851 příspěvků
6. 1. 2022   #6
-
0
-

File.WriteAllText při chybě háže vyjímku, takže buď dostaneš vyjímku z popisem chyby, nebo k chybě nedošlo a ten soubor se vytvořil. Možná jen je jinde, než ho očekáváš.

Windows (a další systémy) mají koncept "pracovního adresáře" a program může mít jiný pracovní adresář, než je umístění programu. Když název souboru není uveden s celou cestou, tak se vytváří v tom pracovním adresáři. Jestli to spouštíš z VS, tak tam to bývá tak, že pracovní adresář není adresář s exáčem. Prohledej adresář projektu.

Nahlásit jako SPAM
IP: 213.211.51.–
Montezo
~ Anonymní uživatel
188 příspěvků
6. 1. 2022   #7
-
0
-

Ok, a šlo by nějak udělat, aby ten exáč nebral ten soubor z "nabindovaného umístění", ale aby vzal "všechny xlsx co jsou okolo něho"? 

Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1851 příspěvků
6. 1. 2022   #8
-
0
-

Někde v nastavení projektu se dá nastavit s jakým pracovním adresářem se má program spouštět. Nebo můžeš programově zjistit, kde ten exáč je, ale nejspíš to nepotřebuješ.

Už teď když ten program spustíš přímo, třeba z průzkumníka, tak pracovní adresář bude adresář exáče.

Nahlásit jako SPAM
IP: 213.211.51.–
6. 1. 2022   #9
-
+1
-
Zajímavé
BDS +

Pokud si chci být jistý, kam se soubor uloží, uvedu jeho Full Path.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Mutagen
~ Anonymní uživatel
549 příspěvků
6. 1. 2022   #10
-
0
-

Já docela zírám, on dokáže pracovat s oledb, udělat select a pracovat s tím a pak se tu ptá na doslova základní věc? Docela pochybuju, že to vůbec psal on a jen někdě zkopčil a snaží se to upravit opět s naší pomocí :D

Nahlásit jako SPAM
IP: 91.237.237.–
Montezo
~ Anonymní uživatel
188 příspěvků
7. 1. 2022   #11
-
0
-

Mutagen: každej můj známej, co se pohybuje v "prostředí programátorů" mi řekl, že stejně, jako je legitimní používat kuchařku/matematické tabulky/strojnické tabulky, je i legitimní (a i efektivní) po webu hledat inspirace.

Nedělám nic strašného. Nebo snad truhlář, co si nezasadí vlastní stromy a/nebo nevytěží vlastní železnou rudu, aby ji zpracoval, a z ní vyrobil teslici, je ihned "plagiátor"?

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
7. 1. 2022   #12
-
0
-

#11 Montezo

Místo, aby jsi se věnoval problému. Tak reaguješ na příspěvek, který sis ani pořádně nedokázal přečíst.
Mutagen nepíše nic o tom, že by to bylo něco špatného nebo podobně.
další věc je, že na té hrůze co jsi tu sem dal, je evidentní, že vůbec nevíš co jsi zkopíroval, takže o inspiraci nemůže být řeč.

Problém je, že ten soubor tam není. Soubor "priklad.json" nebyl na konci běhu programu vytvořen.

nejspíš protože zapisuješ do souboru "vystup.json"

ps.: 

 string fullpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nazevsouboru.typ"); //cesta k souboru ve složce aplikace
 File.WriteAllText(fullpath,....
Nahlásit jako SPAM
IP: 94.113.253.–
W10 :)
Montezo
~ Anonymní uživatel
188 příspěvků
7. 1. 2022   #13
-
0
-

"další věc je, že na té hrůze co jsi tu sem dal, je evidentní, že vůbec nevíš co jsi zkopíroval, takže o inspiraci nemůže být řeč."

O čem přesně mluvíš? Program je funkční, dělá, co sem po něm chtěl. Pak můžu řešit "nějaké estetično".

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
7. 1. 2022   #14
-
0
-

#13 Montezo
to není jen o estetičnu...

Ale pokud už funguje, tak bys měl napsat, kde byla chyba, označit příspěvek s řešením a případně tu dát opravený kód.

Nahlásit jako SPAM
IP: 94.113.253.–
W10 :)
Montezo
~ Anonymní uživatel
188 příspěvků
7. 1. 2022   #15
-
0
-

"další věc je, že na té hrůze co jsi tu sem dal, je evidentní, že vůbec nevíš co jsi zkopíroval, takže o inspiraci nemůže být řeč."

Vy mi tu neustále předhazujete, že něco dělám, a nevím, "co se děje".

Co je teda na tom kódu tak hrozného, že je to - údajně - jenom slepenec? 

Nahlásit jako SPAM
IP: 178.255.168.–
Montezo
~ Anonymní uživatel
188 příspěvků
7. 1. 2022   #16
-
0
-

"to není jen o estetičnu..."

V čem je teda problém? 

Nahlásit jako SPAM
IP: 178.255.168.–
Mutagen
~ Anonymní uživatel
549 příspěvků
8. 1. 2022   #17
-
0
-

#16 Montezo
Problém je v tobě.

Ty pořád nechápeš, že takhle se nenaučíš nikdy programovat. Jde o to, že ty namísto toho aby jsi to napsal sám a snažil se tomu porozumět tak si něco co odpovídá tvýmu "požadavku" seženeš na netu a jen se snažíš to upravit aby to ještě víc odpovídalo tomu co přesně potřebuješ, ale ani to ti nejde udělat a píšeš kvuli tomu sem. Jsou to doslova základy na co se tu furt dokola ptáš, proto jsem tu napsal tu zprávu kterou jsem napsal a ano byl to rýpanec na tvojí obosu, protože když se koukneš na tvojí historii příspěvků tak se tu ptáš doslova jen na základy namísto toho abys vzal dokumentaci, tutoriály nebo dokonce i nějakou knížku a naučil se to, popř. pokud seš i na tohle línej tak google po zadání klíčových slov (např. v tomhle případě by to bylo "C# get full path") a vyzkoušel pář příkladů co ti vyjede tak radši opět píšeš sem a akorád všechny bavíš tím, jak seš totální lama se cokoliv naučit sám a nejlíp aby vše udělali za tebe ostatní.

Nahlásit jako SPAM
IP: 91.237.237.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Práce s JSON v PHP — založil marioDD

Práce se soubory v C — založil Siggi

Práce se soubory — založil hejnallukas

Práce se soubory — založil Borisek

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý