4

C# スクリプトを使用してインポートした Excel ファイルのファイル パスを含むデータベース テーブルがあります。

ファイルパスにスペースが含まれていない限り、スクリプトは正常に動作C:\Temp\My Excel File.xlsし、Illegal characters in pathエラー メッセージが表示されます。残念ながら、ソースでファイル名を変更することはできません。

ファイルパスを以下のようにハードコーディングすると、正常に動作します。

String Filepath = @"C:\Temp\My Excel File.xls";

データベースからのファイルパスを格納する文字列変数を含めることができるように、これを変更するにはどうすればよいですか

String Filepath = //Code to get FilePath from database

StringCorrectedFilePath = @+FilePath;

助けてくれてありがとう

編集: この問題は、無効なエスケープ シーケンスを作成する数字で始まるファイルが原因で発生します。例えばC:\Temp\20160611 My Excel File.xls

編集 2 : 解決済み - ファイル拡張子の後に表示される改行文字が原因でエラーが発生しました。解決策については私の回答をご覧ください。

4

6 に答える 6

5

これをするかどうか

String Filepath = @"C:\Temp\My Excel File.xls";

またはこれ

String Filepath = "C:\\Temp\\My Excel File.xls";

メモリに保存されている文字列はC:\Temp\My Excel File.xls、デバッガーが教えてくれるものは何でも. そのため、どこか (データベース、ファイル、ユーザー入力など) から文字列を読み取るときに、バックスラッシュを「エスケープ」する必要はありません。だから、その文字列を使用してください。

于 2016-06-10T20:17:57.030 に答える
2

Path.GetInvalidFileNameChars

FilePath = string.Concat(FilePath.Split(System.IO.Path.GetInvalidFileNameChars())).Trim();
于 2016-08-03T11:42:25.167 に答える
1

空白を%20文字に置き換えて、取得中に再び空白に置き換えることができます(同じために正規表現を使用することもできます)

String Filepath = @"C:\Temp\My Excel File.xls";
Filepath = Filepath.Replace(" ", "%20");

回収しながら

string mypath = pathyouhavegotfromDB.Replace("%20", " ");
于 2016-06-10T19:45:44.330 に答える
-1

これを試して:

String StringCorrectedFilePath = @""+ Filepath;
于 2016-06-10T19:47:34.867 に答える