`
wjm901215
  • 浏览: 154106 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

.net 操作EXCEL,好文呀,转过来(转自CSDN)

阅读更多



法一:

参照C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Technologies\Interop\Applications\Office\Excel\cs

using System;
using System.Reflection; // For Missing.Value and BindingFlags
using System.Runtime.InteropServices; // For COMException
using Excel;

class AutoExcel {
public static int Main() {

Console.WriteLine ("Creating new Excel.Application");
Application app = new Application();
if (app == null) {
Console.WriteLine("ERROR: EXCEL couldn't be started!");
return 0;
}

Console.WriteLine ("Making application visible");
app.Visible = true;

Console.WriteLine ("Getting the workbooks collection");
Workbooks workbooks = app.Workbooks;

Console.WriteLine ("Adding a new workbook");

// The following line is the temporary workaround for the LCID problem
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);

Console.WriteLine ("Getting the worksheets collection");
Sheets sheets = workbook.Worksheets;

_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
if (worksheet == null) {
Console.WriteLine ("ERROR: worksheet == null");
}

Console.WriteLine ("Setting the value for cell");

// This paragraph puts the value 5 to the cell G1
Range range1 = worksheet.get_Range("G1", Missing.Value);
if (range1 == null) {
Console.WriteLine ("ERROR: range == null");
}
const int nCells = 5;
range1.Value2 = nCells;

// This paragraph sends single dimension array to Excel
Range range2 = worksheet.get_Range("A1", "E1");
int[] array2 = new int [nCells];
for (int i=0; i < array2.GetLength(0); i++) {
array2[i] = i+1;
}
range2.Value2 = array2;

// This paragraph sends two dimension array to Excel
Range range3 = worksheet.get_Range("A2", "E3");
int[,] array3 = new int [2, nCells];
for (int i=0; i < array3.GetLength(0); i++) {
for (int j=0; j < array3.GetLength(1); j++) {
array3[i, j] = i*10 + j;
}
}
range3.Value2 = array3;

// This paragraph reads two dimension array from Excel
Range range4 = worksheet.get_Range("A2", "E3");
Object[,] array4;
array4 = (Object[,])range4.Value2;

for (int i=array4.GetLowerBound(0); i <= array4.GetUpperBound(0); i++) {
for (int j=array4.GetLowerBound(1); j <= array4.GetUpperBound(1); j++) {
if ((double)array4[i, j] != array3[i-1, j-1]) {
Console.WriteLine ("ERROR: Comparison FAILED!");
return 0;
}
}
}

// This paragraph fills two dimension array with points for two curves and sends it to Excel
Range range5 = worksheet.get_Range("A5", "J6");
double[,] array5 = new double[2, 10];
for (int j=0; j < array5.GetLength(1); j++) {
double arg = Math.PI/array5.GetLength(1) * j;
array5[0, j] = Math.Sin(arg);
array5[1, j] = Math.Cos(arg);
}
range5.Value2 = array5;

// The following code draws the chart
range5.Select();
ChartObjects chartobjects = (ChartObjects) worksheet.ChartObjects(Missing.Value);

ChartObject chartobject = (ChartObject) chartobjects.Add(10 /*Left*/, 100 /*Top*/, 450 /*Width*/, 250 /*Height*/);
_Chart chart = (_Chart) chartobject.Chart;

// Call to chart.ChartWizard() is shown using late binding technique solely for the demonstration purposes
Object[] args7 = new Object[11];
args7[0] = range5; // Source
args7[1] = XlChartType.xl3DColumn; // Gallery
args7[2] = Missing.Value; // Format
args7[3] = XlRowCol.xlRows; // PlotBy
args7[4] = 0; // CategoryLabels
args7[5] = 0; // SeriesLabels
args7[6] = true; // HasLegend
args7[7] = "Sample Chart"; // Title
args7[8] = "Sample Category Type"; // CategoryTitle
args7[9] = "Sample Value Type"; // ValueTitle
args7[10] = Missing.Value; // ExtraTitle
chart.GetType().InvokeMember("ChartWizard", BindingFlags.InvokeMethod, null, chart, args7);
/*
ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels,
SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)

  其中:

  Source:包含新图表的源数据的区域。如省略,将修改活动图表工作表或活动工作表中处于选定状态的嵌人式图表。

  Gallery:图表类型。其值可为下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13DBar、x13DColumn, x13DLine, x13DPie、x13 DSurface、xlDoughnut或xlDefaultAutoFormat。

  Format:内置自动套用格式的编号。如省略,将选择默认值。

  P1otBy:指定系列中的数据是来自行(xlRows)还是列(xlColumns)。

  CategoryLabels:表示包含分类标志的源区域内行数或列数的整数。

  SeriesLabels:表示包含系列标志的源区域内行数或列数的整数。

  HasLegend:若指定True,则图表将具有图例。

  Title:图表标题文字。

  CategoryTitle:分类轴标题文字。

  ValueTitle:数值轴标题文字。

  ExtraTitle:三维图表的系列轴标题,或二维图表的第二数值轴标题
http://www.cnblogs.com/pincelee/archive/2006/05/09/394684.html
Excel中设置基本柱形图格式)


chart.Legend.Delete(); 删除系列名称

chart.ChartArea.Interior.ColorIndex = 1; 设置chartArea颜色

chart.PlotArea.Interior.ColorIndex = 40; 设置 PlotArea颜色

Axis col= (Axis) chart.Axes(XlAxisType .xlValue, XlAxisGroup.xlPrimary );
col.TickLabels.Font.Size= 8; 改变坐标轴字体大小
Axis row = (Axis)chart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
row.TickLabels.Font.Size = 8;
*/


Console.WriteLine ("Press ENTER to finish the sample:");
Console.ReadLine();

try {
// If user interacted with Excel it will not close when the app object is destroyed, so we close it explicitely
workbook.Saved = true;
app.UserControl = false;
app.Quit();
} catch (COMException) {
Console.WriteLine ("User closed Excel manually, so we don't have to do that");
}

Console.WriteLine ("Sample successfully finished!");
return 100;
}
}

法二:像操作数据库一样操作

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Data.OleDb ;
public class Form1 : Form
{
private Button button1 ;
private System.Data.DataSet myDataSet ;
private DataGrid DataGrid1 ;
private System.ComponentModel.Container components = null ;

public Form1 ( )
{
file://初始化窗体中的各个组件
InitializeComponent ( ) ;
file://打开数据链接,得到数据集
GetConnect ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}

private void GetConnect ( )
{
file://创建一个数据链接
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
file://打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://创建一个 DataSet对象
myDataSet = new DataSet ( ) ;
file://得到自己的DataSet对象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
file://关闭此数据链接
myConn.Close ( ) ;
}
private void InitializeComponent ( )
{
DataGrid1 = new DataGrid ( ) ;
button1 = new Button ( ) ;
SuspendLayout ( ) ;
DataGrid1.Name = "DataGrid1";
DataGrid1.Size = new System.Drawing.Size ( 400 , 200 ) ;

button1.Location = new System.Drawing.Point ( 124 , 240 ) ;
button1.Name = "button1" ;
button1.TabIndex = 1 ;
button1.Text = "读取数据" ;
button1.Size = new System.Drawing.Size (84 , 24 ) ;
button1.Click += new System.EventHandler ( this.button1_Click ) ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 400 , 280 ) ;
this.Controls.Add ( button1 ) ;
this.Controls.Add ( DataGrid1 ) ;
this.Name = "Form1" ;
this.Text = "读取Excle表格中的数据,并用DataGrid显示出来!" ;
this.ResumeLayout ( false ) ;

}
private void button1_Click ( object sender , System.EventArgs e )
{
DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}

分享到:
评论

相关推荐

    .NET对EXCEL的操作(导入导出数据)

    .net 环境下操作excel .NET如何生成EXCEL文件 .NET Excel常用 对象及功能速查表 A.1 ActionsPane对象 作 用:表示Office程序中的操作窗格控件 命名空间:Microsoft.Office.Tools 常用属性: 名称 访问器 返回类型 ...

    asp.net 导入excel

    .NET Framework提供了Microsoft.Office.Interop.Excel组件,但它是基于COM互操作,需要在服务器上安装Office软件,这可能不是最佳实践,因为会增加服务器维护的复杂性。因此,我们通常推荐使用第三方库,如NPOI或...

    .net winform excel控件

    一个.net winform excel控件,用来编辑excel文件,提供了强大的excel功能,更简单应用。 支持CBScript函数式脚本,可以用excel公式进行编程。 https://dbrwe.blog.csdn.net/article/details/106436735?spm=1001.2

    最好用的.net读写Excel库,支持winform及ASP.NET

    迄今为止最好用得.net读写EXCEL库,比OleDb好了不止一点,不需要安装Office,不会出现由于Excel进程没释放导致的文件占用问题,不多说了,你们懂的!里边有例子及自己写的简要的中文说明,winform及Asp.net均可使用。

    使用myxls (ASP.NET导出excel)

    MyXls是一个操作Excel的开源类库,支持设置字体、列宽、行高(由BOSSMA实现)、合并单元格、边框、背景颜色、数据类型、自动换行、对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单格式的Excel文件十分...

    asp.net excel 导出 导入 【CSDN 集合12个例子】.

    在ASP.NET开发中,Excel导入和导出是常见的需求,特别是在数据处理和报表生成时。以下是一些关于这个主题的关键知识点: 1. **文件格式理解**:Excel文件主要有两种格式,`.xls`(Excel 97-2003)和`.xlsx`(Excel ...

    vb.net引用Excel对象访问excel

    vb.net引用Excel对象访问excel,自带excel文件,绝对可以运行,绝对有参考价值,为这了几行程序我痛苦了十几天,在csdn里面求一位高手帮忙才解决其中一个非常隐蔽的问题,希望对初学者有所帮助。代码通过vb.net2010...

    elimago的专栏 - 博客频道 - CSDN.NET_files\Java-Excel报表开发POI

    elimago的专栏 - 博客频道 - CSDN.NET_files\Java-Excel报表开发POI

    ASP.NET 导出EXCEL Aspose.Cells

    通过链接提供的知识分享地址(http://blog.csdn.net/djk8888/article/details/53065416),可以了解更多关于在ASP.NET中使用Aspose.Cells导出Excel的实例和技巧。文件名称列表中的"**Sheets**"可能是指示有多个工作...

    [VB.NET源码]读写Excel的操作应用

    本文将深入探讨如何利用VB.NET进行Excel操作,并提供相关的源码示例。 首先,要进行Excel操作,我们需要引用Microsoft.Office.Interop.Excel命名空间,这是.NET Framework提供的一个COM互操作库,允许我们与Excel...

    Word、Excel、PPT文件转换成PDF文件(C#)

    使用C#将Word、Excel、PPT文件转换成PDF文件 1,使用VS2017编译程序 2,点击添加文件,选择word文件,点击【word转pdf】,PDF文件生成到桌面; 3,点击添加文件,选择excel文件,点击【excel转pdf】,PDF文件生成到...

    将txt导入excel 快速将txt转换成excel(2.15版)

    0更新(2.18版)https://download.csdn.net/download/vb748/2883662 1快速将txt格式的数据文件转换为excel文件 2后缀名不一定是txt只要是文本格式的就行 3可以自己指定分隔符(tab,空格,或者用户自定义的符号) 4...

    如何将PDF转换成excel表格.docx

    然后,我们可以选择转换模式,即文件转Excel,添加需要转换的PDF文件到转换器中,选择文件输出路径,并开始转换。最后,我们可以轻松地编辑和修改转换后的excel表格,而不需要担心表格错乱的现象。 使用迅捷PDF转换...

    .net Excel导出工具

    .NET环境下的数据导出Excel工具(XML格式),无需安装Office,不需要Excel COM组件 使用方法: http://blog.csdn.net/coofy463/article/details/7177705

    将txt导入excel 快速将txt转换成excel (2.16版)

    0.有更新^_^(2.18版) https://download.csdn.net/download/vb748/2883662 1.添加文件或者目录 2.设置分隔符 3.转换(可批量转换) 4.文本方式速度快,产生的是以.xls或(.xlsx)为后缀的文本文件 5.新产生的Excel...

    asp.net中用于导出excel需要的NPOI.dll

    在ASP.NET开发中,有时我们需要将数据...通过链接提供的博客文章(http://blog.csdn.net/zdw_wym/article/details/46741957),你可以找到更详细的使用教程和示例代码,帮助你更好地理解和使用NPOI.dll进行Excel导出。

    Access批量转Excel(支持WIN11)

    而Excel则是一款电子表格软件,擅长数据分析、报表制作和小型数据库操作。在某些场景下,用户可能需要将Access中的数据转换为Excel格式,以便于更直观的查看、编辑或共享。"Access批量转Excel(支持WIN11)"这个工具就...

    LDF生成;位定义生成,Excel生成;LDF转Excel;Excel转LDF源码

    环境:Windows操作系统,Netframework4.7。 语言:C#。 版本:V1.3。 描述:LDF文件生成;...具体使用说明:https://blog.csdn.net/weixin_44926112/article/details/107535652 联系:微信:wanghu605897356

    Asp.net mvc 在线预览、在线预览Word、Excel、PDF等

    - Open XML SDK:如果你不想依赖Office Interop,可以使用Open XML SDK来读取和操作Word和Excel文件的Open XML格式。虽然这个库不提供直接的转换为HTML的功能,但你可以编写代码解析文件内容并手动转换。 - 第三方...

    Qtxlsx + QtCreator + 自己编写的对excel文件操作小案例

    自己学习研究QtXlsx第三方库操作Excel文件,记录下学习笔记; 里面有自己编写的一个小案例,对excel文件进行读取,修改,刷新,删除等操作! QtCreator 5.9.6 + MinGW 具体可以此篇博客:...

Global site tag (gtag.js) - Google Analytics