using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;
using DevExpress.Spreadsheet;
using ProjectBase.Data.Logs;
namespace ProjectBase.Controls.DocViewer
{
///
/// Excel控件的测试例子
///
public partial class FrmExcelView : DevExpress.XtraEditors.XtraForm
{
///
/// 加载流数据
///
public Stream Stream { get; set; }
///
/// 文件后缀名,如.xls
///
public string Extension { get; set; }
///
/// 文档文件路径。如果指定了该属性,可以不用设置Stream和Extension属性。
///
public string FilePath { get; set; }
///
/// 是否显示打开文件按钮
///
public bool ShowBtnOpenFile
{
get { return m_ShowBtnOpenFile; }
set
{
m_ShowBtnOpenFile = value;
this.btnOpenFile.Visible = this.ShowBtnOpenFile;
}
}
//是否显示保存文件按钮
public bool ShowBtnSaveFile
{
get { return m_ShowBtnSaveFile; }
set
{
m_ShowBtnSaveFile = value;
this.btnSaveFile.Visible = this.ShowBtnSaveFile;
}
}
//记录窗体的名称
readonly string mainFormText;
private bool m_ShowBtnOpenFile = false;//是否显示打开文件按钮
private bool m_ShowBtnSaveFile = false;//是否显示保存文件按钮
public FrmExcelView()
{
InitializeComponent();
//记录窗体的名称,并实现文档变化事件的处理,方便显示新的文件名称
mainFormText = this.Text;
this.spreadsheetControl1.DocumentLoaded += new EventHandler(spreadsheetControl1_DocumentLoaded);
}
private void FrmExcelView_Load(object sender, EventArgs e)
{
//如果文件流不为空,首先根据Stream对象加载文档,否则根据文件路径进行加载
if (!this.DesignMode)
{
if (this.Stream != null)
{
#region MyRegion
try
{
if (!string.IsNullOrEmpty(Extension))
{
if (Extension.Equals(".xls", StringComparison.OrdinalIgnoreCase))
{
this.spreadsheetControl1.LoadDocument(this.Stream, DocumentFormat.Xls);
}
else if (Extension.Equals(".xlsx", StringComparison.OrdinalIgnoreCase))
{
this.spreadsheetControl1.LoadDocument(this.Stream, DocumentFormat.Xlsx);
}
else if (Extension.Equals(".csv", StringComparison.OrdinalIgnoreCase))
{
this.spreadsheetControl1.LoadDocument(this.Stream, DocumentFormat.Csv);
}
else
{
this.spreadsheetControl1.LoadDocument(this.Stream, DocumentFormat.Xls);
}
}
else
{
this.spreadsheetControl1.LoadDocument(this.Stream, DocumentFormat.Xls);
}
}
catch (Exception ex)
{
DevExpress.XtraEditors.XtraMessageBox.Show("加载Excel文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
LogHelper.log.Error(string.Format("加载Excel文件失败,错误为{0}", ex.ToString()));
}
#endregion
}
else if (!string.IsNullOrEmpty(FilePath))
{
this.spreadsheetControl1.LoadDocument(this.FilePath);
}
}
}
///
/// 文档变化后,实现对新文件名称的显示
///
void spreadsheetControl1_DocumentLoaded(object sender, EventArgs e)
{
string fileName = Path.GetFileName(this.spreadsheetControl1.Document.Path);
if (String.IsNullOrEmpty(fileName))
{
Text = mainFormText;
}
else
{
Text = fileName + " - " + mainFormText;
}
}
///
/// 打开Excel文件
///
private void btnOpenFile_Click(object sender, EventArgs e)
{
string filePath;
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Excel(*.xls)|*.xls|All File(*.*)|*.*";
dialog.Title = "Excel选择";
dialog.RestoreDirectory = true;
dialog.FileName = null;
if (dialog.ShowDialog() == DialogResult.OK)
{
filePath = dialog.FileName;
}
else
{
filePath = string.Empty;
}
if (!string.IsNullOrEmpty(filePath))
{
IWorkbook workbook = spreadsheetControl1.Document;
workbook.LoadDocument(filePath);
}
}
///
/// 保存Excel文件
///
private void btnSaveFile_Click(object sender, EventArgs e)
{
spreadsheetControl1.SaveDocument();
this.Close();
}
///
/// 另存为Excel文件
///
private void btnSaveAs_Click(object sender, EventArgs e)
{
string dir = System.Environment.CurrentDirectory;
string filePath = null;
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Excel(*.xls)|*.xls|All File(*.*)|*.*";
dialog.Title = "保存Excel";
dialog.FileName = "";
dialog.RestoreDirectory = true;
if (!string.IsNullOrEmpty(dir))
{
dialog.InitialDirectory = dir;
}
if (dialog.ShowDialog() == DialogResult.OK)
{
filePath = dialog.FileName;
}
if (!string.IsNullOrEmpty(filePath))
{
try
{
IWorkbook workbook = spreadsheetControl1.Document;
workbook.SaveDocument(filePath);
DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
catch (Exception ex)
{
DevExpress.XtraEditors.XtraMessageBox.Show("保存Excel文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
LogHelper.log.Error(string.Format("保存Excel文件失败,错误为{0}", ex.ToString()));
}
}
}
///
/// Excel文件打印
///
private void btnPreview_Click(object sender, EventArgs e)
{
this.Close();
this.spreadsheetControl1.ShowPrintPreview();
}
private void btnClose_Click(object sender, EventArgs e)
{
spreadsheetControl1.SaveDocument();
this.Close();
}
}
}