- PR -

CSV ⇒ EXCEL エクセルファイルを確認すると「001」が「1」と表示されます。

投稿者投稿内容
yama
会議室デビュー日: 2006/01/10
投稿数: 3
投稿日時: 2006-01-11 00:53
◎やりたいこと

  C#でCSVファイルをEXCElファイルに変換したい。
  (OS⇒WindowsS 2003 Server、Excel⇒2000)

●現象
  エクセルファイルを確認すると「001」が「1」と表示されます。

★現コード↓
Excel.Application excel = null;
excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Add("CSVファイルのパス")
excel.Visible = true;

どなたかご教授頂けないでしょうか。
よろしくお願いいたします。


[ メッセージ編集済み 編集者: yama 編集日時 2006-01-11 01:18 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-11 02:45
まずは、前スレとリンクしましょう。

  CSV=>EXCEL

前スレで Range の使い方を提示しましたが、状況は変わらず... ですか。
そして、COM オブジェクトの使い方の誤りも直っていませんね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-01-11 06:49
引用:

yamaさんの書き込み (2006-01-11 00:53) より:
●現象
  エクセルファイルを確認すると「001」が「1」と表示されます。


仕様です。そもそもCSVファイルには表示書式に関する情報は含まれていません。Excelは文字列を型を自動認識した上で、標準書式を用いてこれを表示しようとします。もし001と表示して欲しいなら、表示書式を明示的に指定するか、文字列として処理するように指定する必要があるでしょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-11 08:14
なので、Excel Book 形式で保存したいってことだと思いますけど...
違うのかな...?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2006-01-11 09:14
CSVデータのそれぞれの先頭にタブをつけると文字列として認識されるようになります。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-01-11 10:57
末尾タブでもいいです、x7F なども使えます、データには混入してますが。

="001",="002",="003"
でもいいです、Excelの読み込みの「仕様」ですからどうしようもありません。
==================
手操作では
1.CSVではなくTSVの TAB区切りにする
2.新規シートで列書式を設定しておく(マクロなど)
3.そこに、TSVをコピペする。

[ メッセージ編集済み 編集者: MMX 編集日時 2006-01-11 19:31 ]
soluna
ベテラン
会議室デビュー日: 2004/06/15
投稿数: 59
投稿日時: 2006-01-11 11:12
[データ]-[外部データの取り込み]-[テキスト ファイルのインポート]を
マクロで記録してみて下さい。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-01-11 16:49
お世話になります。

引用:

yamaさんの書き込み (2006-01-11 00:53) より:
◎やりたいこと

  C#でCSVファイルをEXCElファイルに変換したい。
  (OS⇒WindowsS 2003 Server、Excel⇒2000)

●現象
  エクセルファイルを確認すると「001」が「1」と表示されます。


こういうことでしょうか...?
※ C# についてはあまり詳しくないです...。
※ COMオブジェクトの開放はじゃんぬさんのページを参考になさって下さい。

コード:
private void button2_Click(object sender, System.EventArgs e){
  using(System.IO.StreamReader sr = new System.IO.StreamReader(@"D:\test.csv", System.Text.Encoding.Default)){
    try{
      Excel.Application excelApp = null;
      Excel.Workbooks   excelBooks = null; 
      Excel.Workbook    excelBook = null;
      Excel.Sheets      excelSheets = null;
      Excel.Worksheet   excelSheet = null;
      Excel.Range       excelCells = null;
      Excel.Range       excelRange = null;
      try{
        excelApp    = new Excel.Application();
        excelApp.Visible = false;
        excelApp.DisplayAlerts = false;

        excelBooks  = excelApp.Workbooks;
        excelBook   = excelBooks.Add(string.Empty);
        excelSheets = excelApp.Worksheets;
        excelSheet  = (Excel.Worksheet)excelSheets[1];
        excelCells  = excelSheet.Cells;
        excelRange  = null;
        int rowCounter = 1;
        while(sr.Peek() > -1){
          string[] lines = sr.ReadLine().Split(',');
          int colCounter = 1;
          foreach (string str in lines){
            excelRange = (Excel.Range)excelCells[rowCounter, colCounter];
            excelRange.NumberFormatLocal = "@";
            excelRange.Value2 = str;
            this.releaseCom(excelRange);
            colCounter++;
          }
          rowCounter++;
        }
        excelSheet.SaveAs( @"D:\test.xls", 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing, 
                   Type.Missing);
        excelBook.Close(Type.Missing ,Type.Missing, Type.Missing);
        excelApp.Quit();
      }finally{
        this.releaseCom(excelRange);
        this.releaseCom(excelSheet);
        this.releaseCom(excelSheets);
        this.releaseCom(excelBook);
        this.releaseCom(excelBooks);
        this.releaseCom(excelApp);
      }
    }finally{
      if (sr != null) sr.Close();
    }
  }
}
private void releaseCom(object obj){
  try{
    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
  }catch{}
}



スキルアップ/キャリアアップ(JOB@IT)