客户要把各个部门的EXCEL报表,合并成一个EXCEL文件,
请问,怎么该怎么写呢?EXCEL文件不是很有规律的,不可以使用数据库方式来访问,需要逐行逐列遍例下,
谁有代码提供下呢?
请问,怎么该怎么写呢?EXCEL文件不是很有规律的,不可以使用数据库方式来访问,需要逐行逐列遍例下,
谁有代码提供下呢?
解决方案 »
- 在.NET中使用JSON的问题
- asp.net webform ComboBox事件问题
- 高手帮帮忙
- 帮忙检查代码有没有问题
- 如何在前台加上server.urlEncode
- 上海算法面试题,看看你们会不会
- asp.net程序发布后在服务器上可以登录。在客户端无法登录
- 网站有没有必要用三层结构?
- 请问各位大哥哪有.net可以下载?
- 我想在网页上进行FTP操作,该如何做
- 我现在有两个WebForm1和WebForm2怎么在WebForm1中单击一个按钮是显示WebForm2?
- 100分求解:关于 PetShop3.2, CSDN\百度\GOOGEL\YAHOO...搜遍了,也找不到类似的答案,急盼大虾显身!
前面的我就不翻译了。老外操作的是Excel 2000。所有Excel的程序操作都来源于Excel的对象库Excel9.olb.本例也只是对这个东东做一个简单的操作了解。有告诫待于朋友们的具体了解:)也算是为我们站点上天天为Excel烦的兄弟们,指一条“明路”吧:)
首先的一步就是使用Tlbimp这个工具将Excel9.0的对象库文件Excel8.olb转换成为dll,这样才能做为.Net平台Assembly来使用:)操作如下:TlbImp Excel9.olb Excel.dll 只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了。
下面就让我们具体看看C#是如何使用这些东东吧。 1. 创建一个新Excel的Application:
Application exc = new Application();
if (exc == null) {
Console.WriteLine("ERROR: EXCEL couldn't be started");
return 0;
}
2. 让这个工程可见: exc.set_Visible(0, true); 3. 获取WorkBooks集合: Workbooks workbooks = exc.Workbooks; 4. 加入新的WorkBook: _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0); 5. 获取WorkSheets集合:
_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
if (worksheet == null) {
Console.WriteLine ("ERROR in worksheet == null");
}6. 给单元格设置变量:
Range range1 = worksheet.get_Range("C1", Missing.Value);
if (range1 == null) {
Console.WriteLine ("ERROR: range == null");
}
const int nCells = 1;
Object[] args1 = new Object[1];
args1[0] = nCells;
range1.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, range1, args1);
例程:
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using Excel;class Excel {
public static int Main() {
Application exc = new Application();
if (exc == null) {
Console.WriteLine("ERROR: EXCEL couldn't be started!");
return 0;
}exc.set_Visible(0, true);
Workbooks workbooks = exc.Workbooks;
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0);
Sheets sheets = workbook.Worksheets;_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
if (worksheet == null) {
Console.WriteLine ("ERROR: worksheet == null");
}Range range1 = worksheet.get_Range("C1", Missing.Value);
if (range1 == null) {
Console.WriteLine ("ERROR: range == null");
}
const int nCells = 1;
Object[] args1 = new Object[1];
args1[0] = nCells;
range1.GetType().InvokeMember("Value", BindingFlags.SetProperty, null,range1, args1);
return 100;
}
}现在我们来看看如何使用数组,他有些类似于设置单元格。仅仅需要的改变只是args2[0] = array2;
const int nCell = 5;
Range range2 = worksheet.get_Range("A1", "E1");
int[] array2 = new int [nCell];
for (int i=0; i < array2.GetLength(0); i++) {
array2[i] = i+1;
}
Object[] args2 = new Object[1];
args2[0] = array2;
range2.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, range2, args2); 大家需要了解Tlbimp这个工具的使用啊:)这个东东很有用,可以将普通Win32程序移植到.Net下面来:)
首先把COM组件"EXCEL9.OLB"拷贝到cs文件所在的目录下,然后输入下列命令:
tlbimp excel9.olb (注:应用。ENT与COM之间的交互的将COM组件发布到。NET的方法:使用Tyte Library Importer 实用程序(tlbimp.exe),将COM类型库转换成。NET元数据。使用该实用程序最简单的形式是:tlbimp MyComLib.dll/out:MyComLibA.dll,然后就可以用。NET程序集中的MyComLibA.dll)目录下面就产生了三个DLL文件:"Excel.dll"、"Office.dll"、"VBIDE.dll"。在产生了上面的三个文件后,这种转换就成功完成了。在下面的程序中,就可以利用这转换好的三个类库编写和Excel表格相关的各种操作了。 using System;
using System.Reflection;
using System.Data;
using System.Data.SqlClient; public class CComDotNet
{
public static void Main()
{
try
{
Excel.Application excel=new Excel.Application( );
string filename="你的文件路径";
excel.Application.Workbooks.Add(filname);
excel.Cells[ 1 , 1 ] = "第一行第一列" ;
excel.Cells[ 1 , 2 ] = "第一行第二列" ;
excel.Cells[ 2 , 1 ] = "第二行第一列" ;
excel.Cells[ 2 , 2 ] = "第二行第二列" ;
excel.Cells[ 3 , 1 ] = "第三行第一列" ;
excel.Cells[ 3 , 2 ] = "第三行第二列" ;
Excel.XlSaveAsAccessMode asm=Excel.XlSaveAsAccessMode.xlShared;
object Nothing=System.Reflection.Missing.value;
excel.Workbooks[1].SaveAs("另存文件的路径",Nothing,Nothing,Nothing,Nothing,Nothing,asm,Nothing,Nothing,Nothing,Nothing);
excel.Workbooks.Close();
}
catch(Exception e)
{
Console.WriteLine("Error Stack {0} ", e.Message) ;
}
finally
{
;
}
}
}
用:Csc.exe /r:excel.dll /r:office.dll /r:vbide.dll excel.cs 生成EXE文件 如果需要更多的EXCEL方法,可以用.net的OLE/COM游览器打开EXCEL9.OLE文件,可以看到所提供的详细方法
我就是自己写代码,没有测试通过,所以看看有没有其他人做过,看看完整的例子
初始化Excel文件出错,错误信息如下: System.UnauthorizedAccessException: 拒绝访问。该怎么解决呀
=================================================
读写2个EXCEL文件,并合并成一个EXCEL文件
=================================================
在win32应用程序中实现过,web上应该也可以的
Response.Write((string)wksheet1.Cells[n,m]);错误信息如下: System.Runtime.InteropServices.COMException (0x800A03EC): HRESULT 中的异常:0x800A03EC。 at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Excel.Range.get__Default(Object RowIndex, Object ColumnIndex)