だらだらやるよ。 このページをアンテナに追加 RSSフィード

 

2010-10-18

カンマ区切りのデータをエクセルに貼り付ける

| カンマ区切りのデータをエクセルに貼り付ける - だらだらやるよ。 を含むブックマーク カンマ区切りのデータをエクセルに貼り付ける - だらだらやるよ。 のブックマークコメント

CSVファイルなんかをテキストエディタで開いたあとに、一部分だけエクセルにいれて見てみたいときとかに。

よく忘れては調べ直すのでメモ


カンマ区切りのテキストを選択してコピーしてエクセルに貼付けようとしても、1セルの中に入ってしまいます。

それだと当然使いにくいし、わざわざファイルを選択して開くのも面倒。。。

そもそも見たいのは数行だけだし。というときに使います。


カンマ区切りのテキストを選択し、適当セルに貼り付けたあと

データ→区切り位置で、設定をかえればカンマ区切りになりました!やったー

ひろひろ 2011/02/17 10:53 ありがとうございます。やりたかったことでした!!

hatakaramirebahatakaramireba 2011/06/19 17:53 これこれ。いちいちcsv保存したくないときがあって・・・助かりました。

nagakura_eilnagakura_eil 2011/07/16 20:12 わざわざちょっと見るためだけにファイルに保存とかだるいですもんね。
お役に立ててよかった!

yasutakayasutaka 2012/12/17 00:42 カンマ区切りで、できました〜^^ありがとうございます!
探していた事を教えて下さり助かりました!

2010-01-19

C#でXLSファイル作成する。

| C#でXLSファイル作成する。 - だらだらやるよ。 を含むブックマーク C#でXLSファイル作成する。 - だらだらやるよ。 のブックマークコメント

なんか昔書いた記憶があったんだけど、ソースがどっかいったので。。。

汎用に使用できるように、DataSetから、各DataTableをそれぞれシートに保存するようなコード書きました。

なぜか手元にコードがなくなってたけど最初から書くのは大変なのでぐぐった。

データテーブルをExcelに出力するサンプルコード:アーキテクト360

こちらのコードだとDataTableだったので、適当にがりごりDataSet使うように変更。

まだテストしてないけど多分いけたっぽい。

あ、COMでエクセル参照しないと動きませんよ。

あ、20100120修正しました。

xlsSheets.Addしたときの戻り値リリースしてなかったのでそれの追加。

RowIndexが1からだったので、ヘッダがつぶれてたので2に変更。

あとそのままこぴぺれるようにstaticクラスにしました。

	static public class XlsFileCreator {
		static public void CreateXlsFile(DataSet ds,string path) {
			Microsoft.Office.Interop.Excel.Application xlsApplication = null;
			Microsoft.Office.Interop.Excel.Workbooks xlsBooks = null;
			Microsoft.Office.Interop.Excel.Workbook xlsBook = null;
			Microsoft.Office.Interop.Excel.Sheets xlsSheets = null;
			Microsoft.Office.Interop.Excel.Worksheet xlsSheet = null;
			Microsoft.Office.Interop.Excel.Range xlsRange = null;
			object tmp = null;
			try {
				xlsApplication = new Microsoft.Office.Interop.Excel.Application();
				xlsApplication.DisplayAlerts = false;
				xlsBooks = xlsApplication.Workbooks;
				xlsBook = xlsBooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
				xlsSheets = xlsBook.Worksheets;
				tmp = xlsSheets.Add(System.Reflection.Missing.Value,xlsSheets[xlsSheets.Count],ds.Tables.Count - xlsSheets.Count,Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
				int sheetIndex = 1;
				foreach(DataTable dt in ds.Tables) {
					xlsSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsSheets[sheetIndex];
					xlsSheet.Name = dt.TableName;
					for(int i = 0;i <= dt.Columns.Count - 1;i++) {
						xlsRange = (Microsoft.Office.Interop.Excel.Range)xlsSheet.Cells[1,i + 1];
						xlsRange.Value2 = dt.Columns[i].ColumnName;
					}

					int sheetRowIndex = 2;//indexは1から
					foreach(DataRow row in dt.Rows) {
						int sheetColumnIndex = 1;//indexは1から
						foreach(DataColumn column in dt.Columns) {
							if(!row.IsNull(column)) {
								xlsRange = (Microsoft.Office.Interop.Excel.Range)xlsSheet.Cells[sheetRowIndex,sheetColumnIndex];

								if(column.DataType.Name == "Integer" |
									column.DataType.Name == "Int32" |
									column.DataType.Name == "Decimal" |
									column.DataType.Name == "Long" |
									column.DataType.Name == "Double" |
									column.DataType.Name == "Short") {
									xlsRange.NumberFormatLocal = "G/標準";
								} else if(column.DataType.Name == "DateTime") {
									xlsRange.NumberFormatLocal = "yyyy/m/d h:mm";
								} else {
									xlsRange.NumberFormatLocal = "@";
								}
								xlsRange.Value2 = row[column];
								ReleaseComObject((object)xlsRange);
								sheetColumnIndex += 1;
							}
						}
						sheetRowIndex += 1;
					}
					sheetIndex++;
				}
				xlsBook.SaveAs(path,Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet,null,null,null,null,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);

			} catch(Exception ex) {
				Console.WriteLine(ex.StackTrace);
				throw ex;
			} finally {
				ReleaseComObject((object)xlsRange);
				ReleaseComObject((object)xlsSheet);
				ReleaseComObject((object)xlsSheets);
				ReleaseComObject(tmp);
				if(xlsBook != null) {
					xlsBook.Close(true,path,false);
				}
				ReleaseComObject((object)xlsBook);
				ReleaseComObject((object)xlsBooks);
				if(xlsApplication != null) {
					xlsApplication.Quit();
				}
				ReleaseComObject((object)xlsApplication);
			}
		}
		static private void ReleaseComObject(object target) {
			try {
				if((target != null)) {
					System.Runtime.InteropServices.Marshal.ReleaseComObject(target);
				}
			} finally {
				target = null;
			}
		}
	}
このブログは清野竜矢の個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、 私の雇用者には一切の関係はありません。