Xml文档数据提取到Excel表中
近期,财务一位同事,吐槽:《某XX开票软件》导出数据文档只有Xml格式,竟然没有Excel文档,工作起来非常不方便,希望我想想办法。上图:
需求分析:Xml数据----> 提取到DataTable中---->导入到Excel中 ,难度不大,开始干起。
1、主程序窗口
2、解决方案结构
3、实现效果
4、生成Excel代码
public class ExcelHelper { public static void SaveToExcel(MemoryStream ms, string filePath) { using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); data = null; } } public static MemoryStream DataTableToStream(DataTable dt) { HSSFWorkbook wk = new HSSFWorkbook(); ISheet sheet = null; string sheetName = "税务编码"; //if (!string.IsNullOrEmpty(dt.TableName)) //{ // sheetName = dt.TableName; //} sheet = wk.CreateSheet(sheetName); //列头及样式 IRow headerRow = sheet.CreateRow(0); ICellStyle headStyle = wk.CreateCellStyle(); headStyle.Alignment = HorizontalAlignment.Center; IFont font = wk.CreateFont(); font.FontHeightInPoints = 10; font.Boldweight = 700; font.FontName = "微雅黑体"; headStyle.SetFont(font); foreach (DataColumn column in dt.Columns) //column共属性 { headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption); //clomun.ColumnName headerRow.GetCell(column.Ordinal).CellStyle = headStyle; //体会 } //第0行是标题列,第1行开始填充数据 int rowIndex = 1; foreach (DataRow row in dt.Rows) { //HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); //也可以这样写 IRow dataRow = sheet.CreateRow(rowIndex);//新建第1行 foreach (DataColumn column in dt.Columns) { dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());//填充数据 } rowIndex++; } using (MemoryStream ms = new MemoryStream()) { wk.Write(ms); ms.Flush(); return ms; } } }
5、总结:利用IT技术,解决实际工作中问题,提高工作效率,是件有意义,快乐事情,催我继续前行!Mark.