C# 用openxml做excel报表怎么做。excel有模板。查询的数据填充到模板指定的单元格内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 用openxml做excel报表怎么做。excel有模板。查询的数据填充到模板指定的单元格内相关的知识,希望对你有一定的参考价值。

参考技术A 如果EXCEL03格式的,用NPOI
public string GenerationToExcel(string path,string tempPath)


HSSFWorkbook workBook = new HSSFWorkbook(new FileStream(@tempPath, FileMode.Open, FileAccess.Read));
HSSFSheet sheet = workBook.GetSheet("Detail");
HSSFRow row = null;
List<LogisticsReportEntity> easCes = DataFacade<DLogictiscReport>.CreateProvider().getLogisticsReport();
int rowNum = 0;
HSSFCell cell =null; ;
HSSFCellStyle dateTimeCellStyle = workBook.CreateCellStyle();
HSSFDataFormat format = workBook.CreateDataFormat();
dateTimeCellStyle.DataFormat = format.GetFormat("mm/dd/yy");
foreach (LogisticsReportEntity o in easCes)

rowNum++;
row = sheet.CreateRow(rowNum);
int cNum = 0;
row.CreateCell(cNum++).SetCellValue(o.Status);
row.CreateCell(cNum++).SetCellValue(o.ReasonCode);
row.CreateCell(cNum++).SetCellValue(o.CustomerCode);
row.CreateCell(cNum++).SetCellValue(o.CustomerName);
row.CreateCell(cNum++).SetCellValue(o.TranNum);
row.CreateCell(cNum++).SetCellValue(o.CustRef);

string tempFileId = DateTime.Now.ToString("yyyyMMddHHmmss") + WebCom.RandomnAlpha(4);
FileStream file = new FileStream(path + tempFileId + ".xls", FileMode.Create);
workBook.Write(file);
file.Close();
return tempFileId;
参考技术B 建议引用SpreadsheetGear.dll来做,这个是专门做excel表格的,很好很强大。
有了模板之后,不管你数据源是xml还是什么,用这里面的方法和接口 直接往文档里面填就ok了

用C#做Excel文件导入SQL不成功

高手们,我做了一个Excel文件导入SQl表,调试不出现任何报错提示,也不成功。代码如下,请各位帮忙指点一二:
string filePath = tbpath.Text;
string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
try

OleDbConnection oleDbConnection = new OleDbConnection(connExcel);
oleDbConnection.Open();
DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string tableName = dataTable.Rows[0][2].ToString().Trim();
tableName = "[" + tableName.Replace("'", "") + "]";
string query = "SELECT 工作令号,件号,工序/工作内容,数量,尺 寸,材 料,额定工时h,制造车间,铆工姓名,分配工时(h),实际工时(h),质检人,工时差异,日期,月份,是否增补,是否完工,结算季度,备注,挪用制令号,挪用工时量(h) FROM " + tableName;
DataSet dataSet = new DataSet();
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query, connExcel);
oleAdapter.Fill(dataSet, "在制设备铆装工时");
string connString = @"data Source=.;Initial Catalog=ywz;User ID=sa;Pwd=123";
SqlConnection sqlConnection1 = new SqlConnection(connString);
DataTable dataTable1 = new DataTable();
SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT 工作令号,件号,工序/工作内容,数量,尺 寸,材 料,额定工时h,制造车间,铆工姓名,分配工时(h),实际工时(h),质检人,工时差异,日期,月份,是否增补,是否完工,结算季度,备注,挪用制令号,挪用工时量(h) FROM 在制设备铆装工时", sqlConnection1);
SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);
sqlDA1.Fill(dataTable1);
foreach (DataRow dataRow in dataSet.Tables["在制设备铆装工时"].Rows)

DataRow dataRow1 = dataTable1.NewRow();
dataRow1["工作令号"] = dataRow["工作令号"];
dataRow1["件号"] = dataRow["件号"];
//后面是所有字段的描述

dataTable1.Rows.Add(dataRow1);

Console.WriteLine("新插入 " + dataTable1.Rows.Count.ToString() + " 条记录");
sqlDA1.Update(dataTable1);
oleDbConnection.Close();

catch (Exception ex)

Console.WriteLine(ex.ToString());

调试到连接Excel文件时,监视显示connExcel为空。

参考技术A 嗯,connExcel 根据EXCEL的版本不同有变化的,另外你excel文件里有东西么?还有你确定你查看的sql文件是你操作的那个?vs会在debug文件夹里复制一个sql文件用来调试。
还有可以吧try去掉再运行看看。

以上是关于C# 用openxml做excel报表怎么做。excel有模板。查询的数据填充到模板指定的单元格内的主要内容,如果未能解决你的问题,请参考以下文章

C# Winform 要实现如图这样的表格,怎么做?

怎样用Crystal Report从SAP做报表?

C# Winform reportViewer报表,动态表头能做么?

怎么用图表控件FineReport做图表

一直以为做报表只能用EXCEL和PPT,直到我看到了这套模板(附模板)

怎样用excel做表格