csv(テキスト)ファイルへ保存
SaveTextFile メソッドにより、
シート内のデータまたは書式付きデータは、デフォルトのタブ区切り形式、または独自の区切り形式によってテキストファイルに保存できます。
テキストファイルへの保存は、シート単位で行われます。
コントロール内の全シートを保存するには、シートごとに1つのテキスト ファイルに保存する必要があります。
また、SPREADには、さまざまなオプションを備える複数の SaveTextFile メソッドが用意されています。
たとえば、IncludeHeaders 列挙体の設定を使用すると、データとともにヘッダも保存するかどうかを指定できます。
コントロールのデータをタブ区切り形式で保存すると、タブ キャラクタと CR キャラクタで区切られたデータがファイルに保存されます。
タブ区切りファイルは、任意の標準テキスト エディタによるオープン、編集、および保存が可能です。
独自の区切り形式で保存すると、ユーザー定義のデリミタ(コンマ、引用符など)で区切られたデータがファイルに保存されます。
このサンプルではダウンロードボタンを押下するとSPREADのデータをCSV形式のファイルでダウンロードします。
| 製品ID | 製品分類 | 製品名 | 第1Q | 第2Q | 第3Q | 第4Q |
1 | 10001 | 乳製品 | 酪農ミルク | 5500 | 5000 | 4500 | 6000 |
2 | 20001 | 清涼飲料水 | いよかんドリンク | 1000 | 3000 | 2700 | 2700 |
3 | 20002 | 清涼飲料水 | ぶどうジュース | 3000 | 3500 | 4800 | 4800 |
4 | 20003 | 清涼飲料水 | マンゴードリンク | 2000 | 1000 | 500 | 1050 |
5 | 30001 | ビール | 激辛ビール | 5500 | 8000 | 8500 | 10000 |
6 | 30002 | ビール | モルトビール | 3000 | 3500 | 2780 | 4000 |
7 | 20004 | 清涼飲料水 | ぶどうの街 | 500 | 300 | 200 | 700 |
8 | 30003 | ビール | オリエントの村 | 8000 | 9500 | 9580 | 9000 |
9 | 40002 | 焼酎 | 吟醸 ほめごろし | 6000 | 7000 | 9000 | 9500 |
10 | 40003 | 焼酎 | 大吟醸 オリエント | 1000 | 5000 | 6000 | 5000 |
11 | 40005 | 焼酎 | 麦焼酎 ちこちこ | 1000 | 1500 | 1200 | 1258 |
12 | 10002 | 乳製品 | 酪農ミルク(低脂肪) | 501 | 202 | 380 | 456 |
|
ソースコード
別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
public partial class savetextfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
// データ連結
DataSet ds = new DataSet();
ds.ReadXml(MapPath("../App_Data/datanum2.xml"));
FpSpread1.DataSource = ds;
// SPREAD初期化
InitSpread(FpSpread1.Sheets[0]);
}
private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
{
// SPREAD設定
FpSpread1.CommandBar.Visible = false;
FpSpread1.CssClass = "spreadStyle";
FpSpread1.UseClipboard = false;
// フォントサイズの設定
sheet.DefaultStyle.Font.Size = FontUnit.Point(9);
sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Point(9);
sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Point(9);
sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Point(9);
// シート設定
sheet.PageSize = sheet.RowCount;
// 列幅の設定
sheet.Columns[0].Width = 45;
sheet.Columns[1].Width = 85;
sheet.Columns[2].Width = 221;
sheet.Columns[3].Width = 65;
sheet.Columns[4].Width = 65;
sheet.Columns[5].Width = 65;
sheet.Columns[6].Width = 65;
// 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;
}
protected void Button1_Click(object sender, EventArgs e)
{
// クライアント側の変更を確定
FpSpread1.SaveChanges();
FarPoint.Web.Spread.Model.IncludeHeaders saveFlg;
// MemoryStreamに内容を出力
System.IO.MemoryStream ms = new System.IO.MemoryStream();
if (CheckBox1.Checked)
{
saveFlg = FarPoint.Web.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly;
}
else
{
saveFlg = FarPoint.Web.Spread.Model.IncludeHeaders.None;
}
FpSpread1.ActiveSheetView.SaveTextFile(ms, true, saveFlg, "\r\n", ",", "\"");
// クライアント側に応答
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=spread.csv");
Response.BinaryWrite(ms.ToArray());
ms.Flush();
ms.Close();
Response.End();
}
}
|
Partial Public Class savetextfile
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
' データ連結
Dim ds As New System.Data.DataSet()
ds.ReadXml(MapPath("../App_Data/datanum2.xml"))
FpSpread1.DataSource = ds
' SPREAD初期化
InitSpread(FpSpread1.Sheets(0))
End Sub
Private Sub InitSpread(ByVal sheet As FarPoint.Web.Spread.SheetView)
' SPREAD設定
FpSpread1.CommandBar.Visible = False
FpSpread1.CssClass = "spreadStyle"
FpSpread1.UseClipboard = False
' フォントサイズの設定
sheet.DefaultStyle.Font.Size = FontUnit.Point(9)
sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Point(9)
sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Point(9)
sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Point(9)
' シート設定
sheet.PageSize = sheet.RowCount
' 列幅の設定
sheet.Columns(0).Width = 45
sheet.Columns(1).Width = 85
sheet.Columns(2).Width = 221
sheet.Columns(3).Width = 65
sheet.Columns(4).Width = 65
sheet.Columns(5).Width = 65
sheet.Columns(6).Width = 65
' 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
' クライアント側の変更を確定
FpSpread1.SaveChanges()
' MemoryStreamに内容を出力
Dim ms As New System.IO.MemoryStream()
Dim saveFlg As FarPoint.Web.Spread.Model.IncludeHeaders
If CheckBox1.Checked Then
saveFlg = FarPoint.Web.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly
Else
saveFlg = FarPoint.Web.Spread.Model.IncludeHeaders.None
End If
FpSpread1.ActiveSheetView.SaveTextFile(ms, True, saveFlg, vbCr & vbLf, ",", """")
' クライアント側に応答
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment;filename=spread.csv")
Response.BinaryWrite(ms.ToArray())
ms.Flush()
ms.Close()
Response.End()
End Sub
End Class
|
<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true"
Inherits="savetextfile" CodeFile="savetextfile.aspx.cs" %>
<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<asp:Content ID="Content2" ContentPlaceHolderID="HeaderPlaceHolder1" runat="Server">
<style type="text/css">
.Exdiv {
margin-bottom: 10px;
}
</style>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="Exdiv">
<asp:Button ID="Button1" runat="server" Style="margin-top: 10px" Width="200px" Height="30px" Text="ダウンロード" OnClick="Button1_Click" />
<asp:CheckBox ID="CheckBox1" runat="server" Style="margin-left: 10px" Text="ヘッダを含める" />
</div>
<FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid"
BorderWidth="1px">
<CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
ButtonShadowColor="ControlDark" />
<Sheets>
<FarPoint:SheetView SheetName="Sheet1">
</FarPoint:SheetView>
</Sheets>
</FarPoint:FpSpread>
</asp:Content>
|