C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

excelファイル内のデータの切り分け・更新の方法について

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■94163 / inTopicNo.1)  excelファイル内のデータの切り分け・更新の方法について
  
□投稿者/ miyabi (1回)-(2020/03/23(Mon) 11:07:16)

分類:[.NET 全般] 


知識、技術不足なため、ご助力いただきたく
何卒よろしくお願いいたします。

別アプリケーションで添付したExcelファイルを切り分けて、それぞれ二つのテーブルに追加したいと思っています。
現状、単一テーブルへのデータの追加については実行することが出来ているのですが、データを切り分ける方法と
複数テーブルへの追加方法が分からずにいます。何か良い方法はないでしょうか?

ご教授のほど、よろしくお願いいたします。

◇開発及びテスト環境
Visual Studio2019
Excel2013
SQL Server2017
引用返信 編集キー/
■94164 / inTopicNo.2)  Re[1]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ kiku (171回)-(2020/03/23(Mon) 11:42:25)
No94163 (miyabi さん) に返信
> 別アプリケーションで添付したExcelファイルを切り分けて、それぞれ二つのテーブルに追加したいと思っています。
> 現状、単一テーブルへのデータの追加については実行することが出来ているのですが、データを切り分ける方法と
> 複数テーブルへの追加方法が分からずにいます。何か良い方法はないでしょうか?
>
> ご教授のほど、よろしくお願いいたします。
>
> ◇開発及びテスト環境
> Visual Studio2019
> Excel2013
> SQL Server2017

どんなアプリを作成したいのか、わかりませんでした。
また、具体的にどこの部分がわからないのか、わかりませんでした。

どんなアプリなのかについて、想像してみました。

・アプリを起動すると、画面が表示される。
・Excel取り込みボタンを押下すると、
 Excelファイルを指定するダイアログが出てファイルを選択すると、
 指定したExcelファイルの情報を取り込む。
・DB登録ボタンを押下すると、取り込んだ情報をDBに保存する。

やりたいことは上記であっていますか?
引用返信 編集キー/
■94165 / inTopicNo.3)  Re[1]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ はまぐり (86回)-(2020/03/23(Mon) 11:44:00)
No94163 (miyabi さん) に返信

Excelファイルを切り分けるっていうのは
このデータはこっちのテーブルに追加
このデータはあっちのテーブルに追加
みたいに判別するってことですか?

どういうデータのときにどのテーブルになるか
条件を洗い出してチェックすれば良さそうですので
そんな感じで良さそうです(セクシー論法)
引用返信 編集キー/
■94166 / inTopicNo.4)  Re[2]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ kiku (172回)-(2020/03/23(Mon) 11:44:42)
No94164 (kiku さん) に返信
>>現状、単一テーブルへのデータの追加については実行することが出来ているのですが、データを切り分ける方法と
>>複数テーブルへの追加方法が分からずにいます。何か良い方法はないでしょうか?

複数テーブルの追加方法がわからないのですね。
ちゃんと読んでなくてすみません。

単一テーブルへのどのように実現していますか?
引用返信 編集キー/
■94167 / inTopicNo.5)  Re[2]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ miyabi (3回)-(2020/03/23(Mon) 12:52:05)
No94164 (kiku さん) に返信

> どんなアプリを作成したいのか、わかりませんでした。
> また、具体的にどこの部分がわからないのか、わかりませんでした。
>
> どんなアプリなのかについて、想像してみました。
>
> ・アプリを起動すると、画面が表示される。
> ・Excel取り込みボタンを押下すると、
>  Excelファイルを指定するダイアログが出てファイルを選択すると、
>  指定したExcelファイルの情報を取り込む。
> ・DB登録ボタンを押下すると、取り込んだ情報をDBに保存する。
>
> やりたいことは上記であっていますか?

返信ありがとうございます。

現状、別アプリケーションで添付したExcelファイルをFunctionプロシージャの引数で宣言し
下記コードで読み込みを行っています。

''' <summary>
''' Excelファイル読み込み
''' </summary>
''' <param name="file"></param>
''' <returns></returns>
'Private Function RequestFile(ByVal file As String) As XLWorkbook
' Dim url As String = ConfigurationManager.AppSettings("downloadpath") & HttpUtility.UrlEncode(file.Replace("|", ""))

' Dim ServerXML As New MSXML2.ServerXMLHTTP60()
' ServerXML.open("GET", url, False)
' Dim lResolve As Integer = 60 * 1000
' Dim lConnect As Integer = 60 * 1000
' Dim lSend As Integer = 60 * 1000
' Dim lReceive As Integer = 60 * 1000
' ServerXML.setTimeouts(lResolve, lConnect, lSend, lReceive)
' ServerXML.send()
' Dim strm As MemoryStream = New MemoryStream(DirectCast(ServerXML.responseBody, Byte()))

' Dim book = New XLWorkbook(strm)

' strm.Close()

' Return book
'End Function

やりたいことといたしましては、読み込んだExcelファイル(列1,列2,列3,列4,列5)のデータを
親子関係のテーブルA(列1,列2,列4)とテーブルB(列3,列5)にそれぞれ追加したいと考えております。

単一テーブルへの追加は以下のようなコードで実行しております。

'Function SinseiDataImport(ByVal connectName As String, ByVal file As String) As JsonResult

' Dim rtn As New JsonResult()
' Dim mdl As New ReturnMdl
' Me.Response.AddHeader("Access-Control-Allow-Origin", "*")
' rtn.JsonRequestBehavior = JsonRequestBehavior.AllowGet

' Dim check As String = Me.haitacheck(connectName)

' Try

' Dim book As XLWorkbook = Me.RequestFile(file)

' Using con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings(connectName).ConnectionString)

' con.Open()

' Dim trn2 As SqlTransaction = con.BeginTransaction()

' Dim sb As New StringBuilder
' Dim cnt As New Integer
' sb.Clear()
' sb.AppendLine(" INSERT INTO インポートテスト   ( ")
' sb.AppendLine(" テスト項目1     ")
' sb.AppendLine(" ,テスト項目2   ")
' sb.AppendLine(" ) VALUES ( ")
' sb.AppendLine(" @テスト項目1 ")
' sb.AppendLine(" ,@テスト項目2 ")
' sb.AppendLine(" ) ")

' Dim sheet As IXLWorksheet = book.Worksheets(0)

' For i = 2 To sheet.RowCount

' If String.IsNullOrEmpty(sheet.Cell(i, インポートテスト.テスト項目1).Value) Then
' Exit For
' End If

' cnt += con.Execute(sb.ToString(),
' New With {.テスト項目1 = sheet.Cell(i, インポートテスト.テスト項目1).Value _
' , .テスト項目2 = sheet.Cell(i, インポートテスト.テスト項目2).Value} _
' , trn2)

' Next

' trn2.Commit()
' OutPutLog("処理件数" & cnt)
' End Using


' Catch ex As Exception

説明不足かつ長々と書いて申し訳ありません。
以上、よろしくお願いいたします。




引用返信 編集キー/
■94168 / inTopicNo.6)  Re[2]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ miyabi (4回)-(2020/03/23(Mon) 13:04:55)
No94165 (はまぐり さん) に返信

> Excelファイルを切り分けるっていうのは
> このデータはこっちのテーブルに追加
> このデータはあっちのテーブルに追加
> みたいに判別するってことですか?
>
> どういうデータのときにどのテーブルになるか
> 条件を洗い出してチェックすれば良さそうですので
> そんな感じで良さそうです(セクシー論法)

返信ありがとうございます。

おっしゃる通りExcelファイルの列ごとにテーブルAには「列1,列2,列4」テーブルBには「列3,列5」のように
親子関係のテーブル二つにデータを登録したいと考えております。

今までノンプログラミングの開発環境だったため、.netについては1週間程度しか触っておらず、どのように条件をチェックすればよいのかが
わからない状態です。

以上、よろしくお願いいたします。
引用返信 編集キー/
■94169 / inTopicNo.7)  Re[3]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ kiku (173回)-(2020/03/23(Mon) 13:28:52)
2020/03/23(Mon) 13:30:46 編集(投稿者)

No94167 (miyabi さん) に返信
> ' For i = 2 To sheet.RowCount
>
> ' If String.IsNullOrEmpty(sheet.Cell(i, インポートテスト.テスト項目1).Value) Then
> ' Exit For
> ' End If
>
> ' cnt += con.Execute(sb.ToString(),
> ' New With {.テスト項目1 = sheet.Cell(i, インポートテスト.テスト項目1).Value _
> ' , .テスト項目2 = sheet.Cell(i, インポートテスト.テスト項目2).Value} _
> ' , trn2)
>
> ' Next
>
> ' trn2.Commit()

上記のForNextで「インポートテスト」テーブルにインサートしていますが、
このForNextを、もう1つのテーブルに対して、実行すれば良いと思いますが、
何か問題になりますか?

挿入位置は、NextとCommitの間が良いと思います。

※C#ならコードを示せるんですが、VB.NETなので方向性のみコメントします。
引用返信 編集キー/
■94170 / inTopicNo.8)  Re[4]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ miyabi (6回)-(2020/03/23(Mon) 13:55:26)
No94169 (kiku さん) に返信

> 上記のForNextで「インポートテスト」テーブルにインサートしていますが、
> このForNextを、もう1つのテーブルに対して、実行すれば良いと思いますが、
> 何か問題になりますか?
>
> 挿入位置は、NextとCommitの間が良いと思います。
>
> ※C#ならコードを示せるんですが、VB.NETなので方向性のみコメントします。

返信ありがとうございます。

For文をもう一つ作成し、検証してみることにします。

一つだけ疑問があるのですが
同じFor文をもう一つ挿入する場合、例で書かせていただいたようにテーブルAには列1,列2,列4
テーブルBに列3、列5と飛び飛びの列を指定しても問題はないのでしょうか?

以上、よろしくお願いいたします。
引用返信 編集キー/
■94171 / inTopicNo.9)  Re[5]: excelファイル内のデータの切り分け・更新の方法について
□投稿者/ miyabi (8回)-(2020/03/23(Mon) 15:54:02)
No94170 (miyabi さん) に返信
> ■No94169 (kiku さん) に返信
>
>>上記のForNextで「インポートテスト」テーブルにインサートしていますが、
>>このForNextを、もう1つのテーブルに対して、実行すれば良いと思いますが、
>>何か問題になりますか?
>>
>>挿入位置は、NextとCommitの間が良いと思います。
>>
>>※C#ならコードを示せるんですが、VB.NETなので方向性のみコメントします。
>
> 返信ありがとうございます。
>
> For文をもう一つ作成し、検証してみることにします。
>
> 一つだけ疑問があるのですが
> 同じFor文をもう一つ挿入する場合、例で書かせていただいたようにテーブルAには列1,列2,列4
> テーブルBに列3、列5と飛び飛びの列を指定しても問題はないのでしょうか?
>
> 以上、よろしくお願いいたします。

無事二つのテーブルへ追加処理を行うことが出来ました。
解決済みとさせていただきます。ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ