タイトルで見るとどういうのでしょうか、これについて多くの質問と回答を読んだにもかかわらず、データをExcelからデータベースにインポートする方法を知りたいのですが、私の問題を解決するものを見つけてください。 私のExcelシートは毎分(インターネットからの新しい値を取得して同じセルを上書きすることによって)数字をリフレッシュするので、Excelは常に開かれる必要があります。 これらの値をVisual Studioから読み込み、これらの値を取得してデータベースに書きたいと思います。 私はすでにOleDbを使ってPostgreSQLに書き込んでいますが、Excelが閉じているときにのみ機能します(OleDbがそれを読むために優秀だと思っていますし、すでにオープンされています。 私は本当に助けてくれる人に感謝します... ありがとう!Excelのデータをデータベースに動的にインポートする
答えて
...私は、Visual Studioからこれらの値を読みたい...
ないVBAは、これらの値を読み、Postgresのに書き込むのはなぜ? ExcelワークブックでVBAマクロを実行できます。例えば: - それは(この場合はC#の、VSTOを使用して)表をExcelやアップロード、それで強調表示された範囲をとり
Sub Cell2Postgres()
Dim Connection As New ADODB.Connection
Dim Command As New ADODB.Command
Connection.ConnectionString = "Driver=PostgreSQL Unicode;Server=localhost;Port=5432;Database=postgres;Uid=postgres;Pwd=postgres"
Connection.Open
Command.ActiveConnection = Connection
Command.CommandText = "INSERT INTO public.mytable (myfield) VALUES (?)"
Command.Parameters.Append Command.CreateParameter("", adVarChar, adParamInput, 255, Range("A1").Value)
Command.Execute
Connection.Close
End Sub
ああ申し訳ありません!つまり、その作成者はExcelで開いたファイルにVBAを使用できます。 –
Gotcha。私のコメントを削除しました –
それは良い提案であり、当時、他の人の投稿にコメントするのに十分な担当者がいなかったので、アップアップされました。 –
は、これは私がアドインそのために書いたいくつかのコードはまさにそれんです。
このコードは数多くの繰り返しを経て、最終的には非常に満足しています。これは非常に高速です(これまで試みたどのバージョンよりも速く、PgAdminのインポートより高速です)。データ型には非常に寛容です。ターゲット表のデータ型を知る必要はありません。 PostgresSQLのcopy
コマンドでロードできます。
一言で言えば、範囲をとり、新しいシートに特別な値をコピーして貼り付け、シートをCSV(Fast、ネイティブのExcel機能を使用)として保存し、CSVファイルを圧縮し、ファイルをPostgreSQLサーバに接続し、copy
コマンドを実行します。
注意:これはcopy
なので、実際にコマンドを実行するユーザーはスーパーユーザーでなければなりません。
var addIn = Globals.ThisAddIn;
Excel.Range range = addIn.Application.Selection;
Excel.Workbook wb = addIn.Application.Workbooks.Add();
Excel.Worksheet ws = wb.Worksheets[1];
range.Copy();
ws.get_Range("A1").PasteSpecial(Excel.XlPasteType.xlPasteValuesAndNumberFormats);
addIn.Application.DisplayAlerts = false;
wb.SaveAs(Path.Combine(_Outputdir, string.Format("{0}.csv", TableName)),
Excel.XlFileFormat.xlCSV);
wb.Close();
addIn.Application.DisplayAlerts = true;
string newFile = Commons.Compress(_Outputdir, string.Format("{0}.csv", TableName));
これは私たちが書いたカスタムFTPルーチンです。 .NET Class Libraryを動作させることができませんでした。 、
今Commons.FtpPut(newFile, _Outputdir);
データをロードします:あなたはそれをサーバーに取得したいものは何でも行うことができます
再びNpgsqlTransaction trans = conn.BeginTransaction(IsolationLevel.RepeatableRead);
if (TruncateTable)
{
cmd = new NpgsqlCommand(string.Format("truncate table {0}", TableName), conn, trans);
cmd.ExecuteNonQuery();
}
try
{
Stopwatch st = new Stopwatch();
st.Start();
string format = HasHeader ? "csv header" : "csv";
cmd.CommandText = string.Format(
"copy {0} from program 'gzip -dc /apps/external_data/inbound/{0}.csv.gz' " +
"with null as '' {1} encoding 'WIN1250'", TableName, format);
cmd.ExecuteNonQuery();
trans.Commit();
st.Stop();
Results = string.Format("Upload Completed in {0}", st.Elapsed);
}
catch (Exception ex)
{
trans.Rollback();
Results = ex.ToString();
success = false;
}
、独自のFTPのクリーンアッププロセスを手で転がし:
Commons.FtpDelete(newFile, _Outputdir);
これの上に、ユーザーがテーブルを切り捨ておよび/または読み込む権限を持っていることを確認します。
最後の1つの注記 - このコードは概念的ではありません。本番環境で動作し、ユーザーは毎日何十件もの表のアップロードを行います。
- 1. VB.NetのSQLiteデータベースにExcelデータを効率的にインポートする
- 2. codeigniterのデータベースにExcelデータをインポート
- 3. JavaでExcelからデータを動的にインポートする方法は?
- 4. ExcelデータベースをMySQLデータベースにインポートする
- 5. Excelスプレッドシートのデータを既存のAccessデータベースにインポートする
- 6. ExcelからEntity Frameworkのデータベースにデータをインポートする
- 7. ExcelからC#のデータベースにデータをインポートする
- 8. データベースにExcelファイルをインポート
- 9. ExcelファイルをAccessデータベースにインポートする
- 10. CSVからExcel/Calcシートに自動的にデータをインポートします
- 11. SQL Serverにデータを自動的にインポート
- 12. データベース・データを動的にロードするPage
- 13. Django - データベースがExcelにインポートする
- 14. ExcelデータをWordにインポート
- 15. SQL Server 2008にExcelデータをインポートする
- 16. C#ExcelデータをSQLテーブルにインポートする
- 17. ExcelからC#にデータをインポートする
- 18. 比較値を使用してExcelからデータベースにデータをインポート
- 19. SASでExcelファイルを動的にインポートする方法は?
- 20. iphoneアプリケーションでCSVデータを動的にsqliteにインポートするには
- 21. ExcelデータベースをデータベースADO.netにインポートする方法
- 22. csvデータをdbデータベース(sqlite)にインポートする
- 23. MySQLデータベースに.xlsxデータをインポートする
- 24. mysqlデータベースにデータをインポートする
- 25. インポート時にデータ型を自動的に調整する
- 26. フラスコのルートを動的に定義してデータをインポートする
- 27. どのデータベースにasp.netでExcelファイルをインポートするには?
- 28. Excelのインポートでアクセスレコードにデータを追加
- 29. CSVとExcelデータをインポートしてSQLiteデータベースに保存する方法
- 30. ExcelデータをHTML形式でグラフに動的に変換する
見てください:http://superuser.com/questions/731723/one-excel-file-multiple-editing-users-live-updates –
あなたはすでに必要なデータを取得するためのメカニズムを持っています。 Excelに書き込む。確かに、そこにラインを追加するだけで、さらにPostresにアップアップする必要がありますか? – mlinth
もう少し考えてみると、データを直接postgresqlに書き込んで、ODBC/OLE経由でExcelのPostgresqlデータを表示したいと考えています。 – mlinth